在编译库中查找 System.gc()

2023-12-21

我在 gc 日志中看到显式的 gc 调用(见下文)。我可以使用 -XX:+DisableExplicitGC 删除调用,但我真的想知道哪个代码/库正在调用System.gc()?

关于如何追踪它有任何提示吗?


2011-05-30T12:21:48.230+0200: 1.672: [Full GC (System) 1.672: [CMS: 0K->2227K(2868864K), 0.0862299 secs] 62069K->2227K(3118080K), [CMS Perm : 12899K->12893K(409600K)], 0.0863197 secs] [Times: user=0.06 sys=0.03, real=0.09 secs]   

我创建了 System 类的自定义版本,每当调用 System.gc() 时,它都会将堆栈跟踪写入文件。这将允许您追踪它被调用的所有位置。

这将找到系统中任何地方的调用,包括 JDK。

调用 System.gc() 的地方之一是在 RMI 模块中,以帮助查找废弃的远程对象。您可以减少调用完整 GC 的频率

-Dsun.rmi.dgc.server.gcInterval=86400000
-Dsun.rmi.dgc.client.gcInterval=86400000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在编译库中查找 System.gc() 的相关文章