aje*_*son 7 monitoring garbage-collection jvm jmx jvm-hotspot
我想在JMX中监控Full GC频率.MBean暴露GC计数.(参见http://download.oracle.com/javase/1.5.0/docs/api/java/lang/management/GarbageCollectorMXBean.html - java.lang:type = GarbageCollector,name =).
问题是MBean不区分次要和完整的gc.
有人有想法吗?
谢谢.
阿尔诺
我不完全确定这一点,但我认为控制所有内存池的垃圾收集器(至少是Old Gen的一个)是用于主要gc的垃圾收集器.例如:我有一个运行这两个收集器的JVM:
考虑到这一点我会说,PS Scavenge用于较小的gc和PS MarkSweep用于主要的gc.
更新(根据@ajeanson评论,感谢您的反馈顺便说一下):
实际上,我放在那里的例子来自我正在使用的JVM的MXBeans中公开的信息.如您所述,这些是GC算法,GC使用的MXBean的名称基于GC使用的算法.我一直在寻找更多关于此的信息; 在本文http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html中,阅读以下内容:
Java HotSpot VM定义了两代:年轻一代(有时称为"托儿所")和老一代.年轻一代由"伊甸园空间"和两个"幸存者空间"组成.VM最初将所有对象分配给Eden空间,大多数对象在那里死亡.当它执行次要GC时,VM会将任何剩余的对象从Eden空间移动到其中一个幸存者空间.VM将幸存者空间中足够长的对象移动到旧一代的"终身"空间.当终生代填满时,有一个完整的GC通常要慢得多,因为它涉及所有活动对象.永久生成保存虚拟机本身的所有反射数据,例如类和方法对象.
看一下MXBeans上的collectionCount属性,对于我的"PS MarkSweep"收集器(管理Old Generation池的收集器),只有当我在详细输出中得到一个完整的GC时,收集计数似乎才会增加.我可能错了,也许在某些情况下,这个收集器也执行了较小的GC,但我需要运行更多测试才能完全确定.如果有人发现其他内容或者您有关于此问题的更具体信息,请告诉我,因为我对它很感兴趣.