我有一个按24x6时间表运行的应用程序。当前,运行几天后,会自动执行Full GC(通常在一天中的繁忙时间),这会对用户响应时间产生负面影响。
我想做的是强制使用Full GC(也许是在每晚的午夜,在非常短的使用时间内),以防止它在白天发生。我已经尝试过System.gc(),但是它似乎无法保证何时会发生Full GC,甚至不会发生。有这样做的方法吗?
版本信息:
Java™SE运行时环境(内部版本1.6.0_11-b03) Java HotSpot™服务器VM(内部版本11.0-b16,混合模式)
另外-
更具体地说,我正在寻找一种可用于确保将发生Full GC的技术,而不是一种用于运行它的简单方法/函数。
目前,我正在查看CMS用于确定何时需要Full GC的百分比阈值的修改。
谢谢你的帮助。
jmap -histo:live <PID>将强制使用Full GC作为查找所有活动对象的“副作用”。您可以安排它在下班时间回收JVM进程。
jmap -histo:live <PID>
您的JVM build 1.6.0_11-b03很古老,但是jmap所有1.6 HotSpot JVM都应支持。
build 1.6.0_11-b03
jmap