Java 内存大小不应超过512MB存储空间的应用程序

Java 内存大小不应超过512MB存储空间的应用程序,java,jvm,Java,Jvm,我想开发一个应用程序,其中内存大小不应超过512MB的内存空间。如何实现这一点,以便在内存大小增加512MB时,向最终用户提出异常以配置永久空间?您需要使用。链接的文章提供了一个将交互式客户端设置到此API中的示例。具体来说,将提供对不同JVM堆的访问。下面是一个简单的bean用法示例: import java.lang.management.ManagementFactory; import java.lang.management.MemoryPoolMXBean; import java.

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

您需要使用。链接的文章提供了一个将交互式客户端设置到此API中的示例。具体来说,将提供对不同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 + "%)");
    }
}
导入java.lang.management.ManagementFactory;
导入java.lang.management.MemoryPoolMXBean;
导入java.lang.management.MemoryUsage;
导入java.util.Date;
导入java.util.List;
公共类PermGenMonitorTask实现可运行{
私有MemoryPoolMXBean permgenBean=null;
公共PermGenMonitorTask(){
List bean=ManagementFactory.getMemoryPoolMXBeans();
for(MemoryPoolMXBean:beans){
if(bean.getName().toLowerCase().indexOf(“perm-gen”)>=0){
permgenebean=bean;
打破
}
}
}
@凌驾
公开募捐{
MemoryUsage currentUsage=permgenBean.getUsage();
int percentageUsed=(int)((currentUsage.getUsed()*100)
/currentUsage.getMax());
System.out.println(新日期()+“:Permgen”+
currentUsage.getUsed()+
“+currentUsage.getMax()的”+
“(“+使用百分比+”)”;
}
}

使用
java-Xms
是不够的?Daniel,我正在寻找从我的应用程序中显示的某种弹出窗口,通知用户配置内存。注意:如果您的用户使用的是java 8,就没有permgen了。我同意,他们引入了元空间的概念,但是有没有办法处理这种情况呢?请解释一下你为什么要这样做。你的问题自相矛盾,那意味着你做错了什么。阅读JMX官方文档并在web上搜索一些示例。一旦你让它工作起来,它就相当简单了。