我使用G1GC来处理我的java应用程序。当使用G1GC(供应商:Oracle)的默认GC配置时,我几乎总是注意到在年轻代疏散期间Ref Proc
时间非常高(在5秒到70秒之间)。
我知道我可以很容易地修复它使用-XX:+ParallelRefProcEnabled
。我认为我可以信任JVM为我做一些琐碎的应用程序。我遗漏了什么?
可能是因为您的应用程序或其依赖项之一使用终结器(直接字节缓冲区和一些IO/本机绑定对象)或软/弱/虚引用,并以高速率创建它们。
您可以尝试进行堆转储,并查看堆上存在哪些可访问但不可强访问的对象。