我有java应用程序,它使特定的内存使用工作.我注意到,当我为年轻代开始使用几乎80%的堆设置应用程序时,我的应用程序的工作速度比使用默认的1:2设置快得多.特别是,我正在推出jvm:
java -XX:NewSize=10G -XX:+UseParallelOldGC -server -Xmx12G -Xms12G
服务器至少有14 Gb的可用物理内存,所以对于java堆和"其他"空间来说应该足够了.
现在发生的事情是这样的:
25.289: [GC [PSYoungGen: 7872317K->1058813K(9175040K)] 7872533K->1059029K(11272192K), 0.1876420 secs] [Times: user=1.92 sys=1.01, real=0.18 secs]
28.918: [GC [PSYoungGen: 8923133K->1091124K(9175040K)] 8923349K->1091340K(11272192K), 0.2206940 secs] [Times: user=1.92 sys=1.70, real=0.22 secs]
32.946: [GC [PSYoungGen: 8955444K->1060567K(9175040K)] 8955660K->1060783K(11272192K), 0.1804050 secs] [Times: user=2.86 sys=0.01, real=0.18 secs]
37.166: [GC [PSYoungGen: 8924887K->1080085K(8329344K)] 8925103K->1080301K(10426496K), 0.1891370 secs] [Times: user=3.08 sys=0.01, real=0.19 secs]
41.326: [GC [PSYoungGen: 8098709K->1088209K(8106880K)] 8098925K->1088425K(10204032K), 0.2284920 secs] [Times: user=3.49 sys=0.04, real=0.23 secs]
45.779: [GC [PSYoungGen: 8106833K->59784K(8672768K)] 8107049K->1039790K(10769920K), 0.2195770 secs] [Times: user=2.02 sys=1.91, …Run Code Online (Sandbox Code Playgroud) 我想覆盖文件中的区域(可能很小).假设我调用fseek,fwrite,fsync.有没有办法确保这种区域重写操作的原子性,例如,我需要确定,在任何情况下失败,该区域将只包含旧的(修改前)数据,或仅包含新的(修改的)数据,但不包括混合这个.
我想强调两件事.
第一:没有办法原子地写任何大小的区域是可以的 - 我们可以通过将数据附加到文件,fsync'ing,然后重写文件中的'指针'区域来处理它,然后再次fsyncing.但是,如果'指针'写入不是原子的,我们仍然可以使用非法指针来破坏文件.
第二:我很确定,写1字节区域是原子的:我不会在文件中看到任何从未放在那里的字节.因此我们可以使用一些技巧为地址分配两个区域并使用1字节开关,因此重写区域变为 - 附加新数据,同步,重写两个(未使用的)指针槽中的一个,再次同步,然后重写'切换字节'并再次同步.因此,覆盖区域操作现在至少包含3个fsync调用.
所有这一切都会更加轻松,如果我有长时间的原子写作,但我真的拥有它吗?
有没有办法在不使用第2点中提到的方法的情况下处理这种情况?
另一个问题是 - 写作和同步之间是否有任何顺序保证?例如,如果我调用fseek,fwrite [1],fseek,fwrite [2],fsync,我可以在[2]提交写入,并在[1]写入 - 不提交吗?
这个问题适用于linux和windows操作系统,任何特定的答案(例如在ubuntu版本中都是abc ....)也是需要的.
我有页面https://pixit.im/AAC 它包含视频并具有正确的og标签.OG调试器说它一切都很好,并在那里显示来自og:image的图像.
但是,当我第一次将此链接粘贴到Facebook时,我看不到预览中的图像,只有文本形式og:title和og:description.
如果我在FB OG调试器中打开url,或稍后粘贴它,或者使用此链接发布记录,则会显示图像.
但是,事实是,每次我第一次从我的资源(https://pixit.im/A**)粘贴一些链接到FB共享对话框时,它都不会加载图像进行预览.问题是 - 为什么?