Java 为什么在使用G1GC时,我的“Ref Proc”次数会很高

Java 为什么在使用G1GC时,我的“Ref Proc”次数会很高,java,garbage-collection,jvm,Java,Garbage Collection,Jvm,我使用G1GC来处理我拥有的许多java应用程序。当使用G1GC(供应商:Oracle)的默认GC配置时,我几乎总是注意到非常高的(5秒到70秒之间的任何地方)Ref Proc时间,主要是在年轻一代撤离期间 我知道我可以使用-XX:+ParallelRefProcEnabled轻松修复它。我认为我可以信任JVM为我的琐碎应用程序做正确的事情。我在这里遗漏了什么?可能是因为您的应用程序或其依赖项使用终结器(直接字节缓冲区和某些IO/本机绑定对象)或软/弱/幻影引用并以高速创建它们 您可以尝试进行堆

我使用G1GC来处理我拥有的许多java应用程序。当使用G1GC(供应商:Oracle)的默认GC配置时,我几乎总是注意到非常高的(5秒到70秒之间的任何地方)
Ref Proc
时间,主要是在年轻一代撤离期间


我知道我可以使用
-XX:+ParallelRefProcEnabled
轻松修复它。我认为我可以信任JVM为我的琐碎应用程序做正确的事情。我在这里遗漏了什么?

可能是因为您的应用程序或其依赖项使用终结器(直接字节缓冲区和某些IO/本机绑定对象)或软/弱/幻影引用并以高速创建它们

您可以尝试进行堆转储,查看堆上存在哪些可访问但不强可访问的对象