Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ParallelOld GC禁用类卸载_Java_Garbage Collection - Fatal编程技术网

Java 使用ParallelOld GC禁用类卸载

Java 使用ParallelOld GC禁用类卸载,java,garbage-collection,Java,Garbage Collection,我的应用程序使用ParallelOld GC,在使用JMC分析应用程序时,我看到在类卸载上花费了相当多的时间。例如 Event Type Name Duration (ns) GC Phase Pause GC Pause 191,864,741 GC Phase Pause Level 1 pre compact 18,946 GC P

我的应用程序使用ParallelOld GC,在使用JMC分析应用程序时,我看到在类卸载上花费了相当多的时间。例如

Event Type              Name                    Duration (ns)   
GC Phase Pause          GC Pause                191,864,741 

GC Phase Pause Level 1  pre compact             18,946      
GC Phase Pause Level 1  marking phase           140,394,856 
GC Phase Pause Level 2  par mark                40,388,459  
GC Phase Pause Level 2  reference processing    1,073,803   
GC Phase Pause Level 3  SoftReference           756,766     
GC Phase Pause Level 3  WeakReference           61,320      
GC Phase Pause Level 3  FinalReference          238,764     
GC Phase Pause Level 3  PhantomReference        6,014       
GC Phase Pause Level 3  JNI Weak Reference      6,629       
GC Phase Pause Level 2  class unloading         98,902,975  <=========
GC Phase Pause Level 1  summary phase           6,858       
GC Phase Pause Level 1  adjust roots            15,803,657  
GC Phase Pause Level 1  compaction phase        34,518,114  
GC Phase Pause Level 2  drain task setup        1,672       
GC Phase Pause Level 2  dense prefix task setup 1,816       
GC Phase Pause Level 2  steal task setup        234         
GC Phase Pause Level 2  par compact             34,206,466  
GC Phase Pause Level 2  deferred updates        1,624       
GC Phase Pause Level 1  post compact            890,295  
事件类型名称持续时间(ns)
GC相位暂停GC暂停191864741
GC阶段暂停1级预压缩18946
GC阶段暂停级别1标记阶段140394856
GC相位暂停水平2 PAR标记40388459
GC阶段暂停2级参考处理1073803
GC相位暂停3级软件参考756766
GC相位暂停级别3 WeakReference 61320
GC阶段暂停级别3最终参考238764
GC阶段暂停级别3幻影参考6014
GC相位暂停3级JNI弱参考6629
GC阶段暂停级别2类卸载98902975您可以尝试:

-Xnoclassgc

禁用类的垃圾收集(GC)。这可以节省一些GC时间,从而缩短应用程序运行期间的中断。当您在启动时指定-Xnoclassgc时,应用程序中的类对象将在GC期间保持不变,并且将始终被视为活动的

这会导致更多内存被永久占用,如果不小心使用,将引发内存不足异常。

或者,要考虑内存大小,请增加MetaspaceSize
-XX:MetaspaceSize=64m

当类元数据使用量达到MetaspaceSize时(32位客户端VM上为12字节,64位VM上为32位服务器VM上为16字节,具有更大的大小),会引发垃圾收集来收集失效的类加载器和类

来源

您可以尝试:

-Xnoclassgc

禁用类的垃圾收集(GC)。这可以节省一些GC时间,从而缩短应用程序运行期间的中断。当您在启动时指定-Xnoclassgc时,应用程序中的类对象将在GC期间保持不变,并且将始终被视为活动的

这会导致更多内存被永久占用,如果不小心使用,将引发内存不足异常。

或者,要考虑内存大小,请增加MetaspaceSize
-XX:MetaspaceSize=64m

当类元数据使用量达到MetaspaceSize时(32位客户端VM上为12字节,64位VM上为32位服务器VM上为16字节,具有更大的大小),会引发垃圾收集来收集失效的类加载器和类


sources

我尝试过-Xnoclassgc,但没有成功:“类卸载”阶段仍然存在于配置文件中,并且仍然占据了总GC时间的很大一部分…我很惊讶,Xnoclassgc不能与CMSClassUnloadingEnabled一起使用(当指定-Xnoclassgc或-XX:-类卸载时禁用CMS类卸载选项),您是否可以尝试增加MetaspaceSize-XX:MetaspaceSize=64m或128m,因为禁用类GC是很危险的,可能会降低它们的GC频率我现在的最佳猜测是:FlightRecorder在收集堆统计信息时显式触发了GC。可能是这些显式触发的GC以某种方式忽略了标志-Xnoclassgc和类似的标志…您只能通过启用-XX:+PrintGCDetails-XX:+PrintGCTaskTimeStamps来检查GC活动,无需工具验证我尝试过-Xnoclassgc,但运气不佳:“类卸载”阶段仍然存在于配置文件中,而且仍然占据了总GC时间的很大一部分…我很惊讶,Xnoclassgc不能与CMSClassUnloadingEnabled一起使用(当指定-Xnoclassgc或-XX:-ClassUnloading时禁用CMS类卸载选项),您是否可以尝试增加MetaspaceSize-XX:MetaspaceSize=64m或128m,因为禁用类GC是危险的,也许可以降低GC频率我现在最好的猜测是:FlightRecorder在收集堆统计信息时显式触发了GC。可能是这些显式触发的GC以某种方式忽略了标志-Xnoclassgc和类似的标志…您只能通过启用-XX:+PrintGCDetails-XX:+PrintGCTaskTimeStamps来检查GC活动,而无需使用工具进行验证