for (GarbageCollectorMXBean gcBean : ManagementFactory.getGarbageCollectorMXBeans()) { // 마지막 gc 정보 System.out.println("gc count : " + gcBean.getCollectionCount()); com.sun.management.GarbageCollectorMXBean sunGcBean = (com.sun.management.GarbageCollectorMXBean) gcBean; // 마지막 gc duration time System.out.println(sunGcBean.getName() + "last gc time : " + sunGcBean.getLastGcInfo().getDuration()); // 마지막 gc duration time = getLastGcInfo().getDuration() System.out.println(sunGcBean.getLastGcInfo().getEndTime() - sunGcBean.getLastGcInfo().getStartTime()); // 마지막 gc 실행 정보 System.out.println(sunGcBean.getLastGcInfo()); }
[jmx api 사용]
try { MBeanServerConnection server = ManagementFactory.getPlatformMBeanServer(); ObjectName name = new ObjectName("java.lang:type=GarbageCollector,name=PS MarkSweep"); MBeanInfo info = null; info = this.server.getMBeanInfo(objectName); Listnames = Arrays.stream(Optional.ofNullable(info).map(MBeanInfo::getAttributes).orElse(new MBeanAttributeInfo[]{null})).map(MBeanAttributeInfo::getName).collect(toList()); names.forEach(n -> System.out.println(n + " : " + server.getAttribute(name, n))); } catch (MalformedObjectNameException e) { e.printStackTrace(); }
PS Scavenge - young gc
PS MarkSweep - full gc
※ 정리 필요함
댓글 없음:
댓글 쓰기