我想开发一个内存大小不应超过512MB内存空间的应用程序。如何实现这一目标,以便在内存大小增加512MB时,会向最终用户提出异常以配置permgen空间?
答案 0 :(得分:0)
您想要使用Java Management Extensions (JMX)。链接的文章提供了一个在此API中设置交互式客户端的示例。具体来说,MemoryMXBean
将提供对不同JVM堆的访问。这是bean用法的简洁示例:
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryPoolMXBean;
import java.lang.management.MemoryUsage;
import java.util.Date;
import java.util.List;
public class PermGenMonitorTask implements Runnable {
private MemoryPoolMXBean permgenBean = null;
public PermGenMonitorTask() {
List<MemoryPoolMXBean> beans = ManagementFactory.getMemoryPoolMXBeans();
for(MemoryPoolMXBean bean : beans) {
if(bean.getName().toLowerCase().indexOf("perm gen") >= 0) {
permgenBean = bean;
break;
}
}
}
@Override
public void run() {
MemoryUsage currentUsage = permgenBean.getUsage();
int percentageUsed = (int)((currentUsage.getUsed() * 100)
/ currentUsage.getMax());
System.out.println(new Date() + ": Permgen " +
currentUsage.getUsed() +
" of " + currentUsage.getMax() +
" (" + percentageUsed + "%)");
}
}