在调度的基础上(例如每10分钟一次)运行“ jmap -histo:live”以触发垃圾回收是否安全(或好主意)?我们希望减少从AWS(Amazon Web Services)收到的警报数量,该数量在内存消耗高时触发。
服务器有16GB RAM。 GC是G1GC(而不是CMS)。 Xmx设置为12GB。 Xms也是12GB(但我们计划减少它)。通过Apache POI处理/创建Excel文件时,内存消耗迅速增加(我们正在使用XSSFSheet)。
顺便说一句,我们计划在生产环境(SAP Hybris 5.7.0.3)上运行计划的jmap。
最佳答案
如果您确实要触发完整的gc,则jcmd <pid> GC.run
似乎更清晰,但这是灾难的根源。不要做!尤其是G1不在,因为完整的gc是单线程的(一个CPU),并且可能会花费很多时间。相反,请解决问题,即应用程序使用过多的RAM(减小堆大小并设置元空间的限制),或者警报发出时间过早。
简而言之,这既不安全也不是一个好主意,它将杀死您。
关于java - 按计划运行“jmap -histo:live”以触发垃圾回收是否安全(或好主意)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47592924/