com.github.ltsopensource.jvmmonitor.mbean.JVMMemory Maven / Gradle / Ivy
package com.github.ltsopensource.jvmmonitor.mbean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryPoolMXBean;
import java.util.List;
/**
* @author Robert HG ([email protected]) on 9/15/15.
*/
public class JVMMemory implements JVMMemoryMBean {
private static final JVMMemory instance = new JVMMemory();
public static JVMMemory getInstance() {
return instance;
}
private MemoryMXBean memoryMXBean;
private MemoryPoolMXBean permGenMxBean;
private MemoryPoolMXBean oldGenMxBean;
private MemoryPoolMXBean edenSpaceMxBean;
private MemoryPoolMXBean pSSurvivorSpaceMxBean;
private JVMMemory() {
memoryMXBean = ManagementFactory.getMemoryMXBean();
List list = ManagementFactory.getMemoryPoolMXBeans();
for (MemoryPoolMXBean item : list) {
if ("CMS Perm Gen".equals(item.getName())
|| "Perm Gen".equals(item.getName())
|| "PS Perm Gen".equals(item.getName())
|| "G1 Perm Gen".equals(item.getName())
) {
permGenMxBean = item;
} else if ("CMS Old Gen".equals(item.getName())
|| "Tenured Gen".equals(item.getName())
|| "PS Old Gen".equals(item.getName())
|| "G1 Old Gen".equals(item.getName())
) {
oldGenMxBean = item;
} else if ("Par Eden Space".equals(item.getName())
|| "Eden Space".equals(item.getName())
|| "PS Eden Space".equals(item.getName())
|| "G1 Eden".equals(item.getName())
) {
edenSpaceMxBean = item;
} else if ("Par Survivor Space".equals(item.getName())
|| "Survivor Space".equals(item.getName())
|| "PS Survivor Space".equals(item.getName())
|| "G1 Survivor".equals(item.getName())
) {
pSSurvivorSpaceMxBean = item;
}
}
}
// Memory Heap
@Override
public long getHeapMemoryCommitted() {
return memoryMXBean.getHeapMemoryUsage().getCommitted();
}
@Override
public long getHeapMemoryInit() {
return memoryMXBean.getHeapMemoryUsage().getInit();
}
@Override
public long getHeapMemoryMax() {
return memoryMXBean.getHeapMemoryUsage().getMax();
}
@Override
public long getHeapMemoryUsed() {
return memoryMXBean.getHeapMemoryUsage().getUsed();
}
// Memory NonHeap
@Override
public long getNonHeapMemoryCommitted() {
return memoryMXBean.getNonHeapMemoryUsage().getCommitted();
}
@Override
public long getNonHeapMemoryInit() {
return memoryMXBean.getNonHeapMemoryUsage().getInit();
}
@Override
public long getNonHeapMemoryMax() {
return memoryMXBean.getNonHeapMemoryUsage().getMax();
}
@Override
public long getNonHeapMemoryUsed() {
return memoryMXBean.getNonHeapMemoryUsage().getUsed();
}
// memory permGen
@Override
public long getPermGenCommitted() {
if (null == permGenMxBean) {
return 0;
}
return permGenMxBean.getUsage().getCommitted();
}
@Override
public long getPermGenInit() {
if (null == permGenMxBean) {
return 0;
}
return permGenMxBean.getUsage().getInit();
}
@Override
public long getPermGenMax() {
if (null == permGenMxBean) {
return 0;
}
return permGenMxBean.getUsage().getMax();
}
@Override
public long getPermGenUsed() {
if (null == permGenMxBean) {
return 0;
}
return permGenMxBean.getUsage().getUsed();
}
// memory oldGen
@Override
public long getOldGenCommitted() {
if (null == oldGenMxBean) {
return 0;
}
return oldGenMxBean.getUsage().getCommitted();
}
@Override
public long getOldGenInit() {
if (null == oldGenMxBean) {
return 0;
}
return oldGenMxBean.getUsage().getInit();
}
@Override
public long getOldGenMax() {
if (null == oldGenMxBean) {
return 0;
}
return oldGenMxBean.getUsage().getMax();
}
@Override
public long getOldGenUsed() {
if (null == oldGenMxBean) {
return 0;
}
return oldGenMxBean.getUsage().getUsed();
}
// memory edenSpace
@Override
public long getEdenSpaceCommitted() {
if (null == edenSpaceMxBean) {
return 0;
}
return edenSpaceMxBean.getUsage().getCommitted();
}
@Override
public long getEdenSpaceInit() {
if (null == edenSpaceMxBean) {
return 0;
}
return edenSpaceMxBean.getUsage().getInit();
}
@Override
public long getEdenSpaceMax() {
if (null == edenSpaceMxBean) {
return 0;
}
return edenSpaceMxBean.getUsage().getMax();
}
@Override
public long getEdenSpaceUsed() {
if (null == edenSpaceMxBean) {
return 0;
}
return edenSpaceMxBean.getUsage().getUsed();
}
// memory survivor
@Override
public long getSurvivorCommitted() {
if (null == pSSurvivorSpaceMxBean) {
return 0;
}
return pSSurvivorSpaceMxBean.getUsage().getCommitted();
}
@Override
public long getSurvivorInit() {
if (null == pSSurvivorSpaceMxBean) {
return 0;
}
return pSSurvivorSpaceMxBean.getUsage().getInit();
}
@Override
public long getSurvivorMax() {
if (null == pSSurvivorSpaceMxBean) {
return 0;
}
return pSSurvivorSpaceMxBean.getUsage().getMax();
}
@Override
public long getSurvivorUsed() {
if (null == pSSurvivorSpaceMxBean) {
return 0;
}
return pSSurvivorSpaceMxBean.getUsage().getUsed();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy