我已经注意到,在Java中播放音频时,gc中的MarkSweepCompact阶段太长,导致短暂的静音期,这是不可接受的。所以我需要使用低暂停时间的gc。我尝试了Parallel和CMS,它们似乎工作得更好,因为我想暂停时间较短,而且它们不像默认的那样进行完整收集。
到目前为止,我已经使用ParallelGC的以下选项测试了我的程序:
-XX:+UseParallelGC
-XX:MaxGCPauseMillis=70
对于ConcurrentMarkSweep:
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
我也尝试过G1GC,但仍在Java 6中处于实验状态。两种模式的选项:
-Xms15m
-Xmx40m
-XX:+UnlockExperimentalVMOptions
-XX:+CMSClassUnloadingEnabled
-XX:+TieredCompilation
-XX:+AggressiveOpts
-XX:+UseAdaptiveSizePolicy
-Dsun.java2d.noddraw=false
-Dswing.aatext=true
-XX:MaxPermSize=25m
-XX:MaxHeapFreeRatio=10
-XX:MinHeapFreeRatio=10
在这种情况下哪个GC更好?是否可