多年来,我们一直在运行具有适度堆大小的Java服务+UseParallelOldGC.现在,我们开始使用更大的堆和G1收集器推出新服务.这很顺利.
对于我们使用的服务+UseParallelOldGC,我们通过查看收集后的旧代大小并在阈值上发出警报来监视内存泄漏.这很有效,事实上两周前我们的培根就已经存了.
具体而言,+UseParallelOldGC我们执行以下操作:
ManagementFactory.getMemoryPoolMXBeans()MemoryPoolMXBean名称以结尾的结果"Old Gen"getCollectionUsage().getUsed()(如果有)getMax()不幸的是,似乎G1不再具有这样的概念getCollectionUsage().
但是,从根本上说,我们希望在混合循环中选择的最后一个混合集合之后监视G1堆大小,或类似的东西.
例如,在VM之外我会对awk脚本感到满意,该脚本只发现了最后一个脚本,'(mixed)'然后'(young)'查看了最终的堆大小(例如'1540.0M' 'Heap: 3694.5M(9216.0M)->1540.0M(9216.0M)')
在Java VM中有没有办法做到这一点?