内存大小不应超过512MB Permspace的应用程序

时间:2015-10-06 14:47:19

标签: java jvm

我想开发一个内存大小不应超过512MB内存空间的应用程序。如何实现这一目标,以便在内存大小增加512MB时,会向最终用户提出异常以配置permgen空间?

1 个答案:

答案 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 + "%)");
    }
}
相关问题