如何永久增加Java堆内存?

2022-09-01 17:04:36

我有一个Java堆内存问题。我用java开发了一个客户端服务器应用程序,它作为Windows服务运行,它需要超过512MB的内存。我有2GB的RAM,但当我运行我的应用程序时,它会引发异常

内存不足错误:java 堆空间

但是我已经在java控制面板中设置了堆大小(最大512MB),我仍然得到同样的错误。我无法通过命令行设置堆大小,因为我的应用程序作为 Windows 服务运行,所以我如何增加默认堆大小?


答案 1

Java 虚拟机采用两个命令行参数来设置初始和最大堆大小:-Xms 和 -Xmx。您可以添加名为 _JAVA_OPTIONS 的系统环境变量,并在其中设置堆大小值。
例如,如果您想要 512Mb 的初始堆大小和 1024Mb 的最大堆大小,则可以使用:

在“窗口”下:

SET _JAVA_OPTIONS = -Xms512m -Xmx1024m

在 Linux 下:

export _JAVA_OPTIONS="-Xms512m -Xmx1024m"

可以使用运行时类的 totalMemory() 方法以编程方式读取默认的 JVM 堆大小。使用以下代码读取 JVM 堆大小。

public class GetHeapSize {
    public static void main(String[]args){

        //Get the jvm heap size.
        long heapSize = Runtime.getRuntime().totalMemory();

        //Print the jvm heap size.
        System.out.println("Heap Size = " + heapSize);
    }
}

答案 2

这对我有用:

导出_JAVA_OPTIONS=“-Xmx1g”

重要的是你没有空间,因为对我来说它不起作用。我建议只是复制和粘贴。然后我跑了:

java -XshowSettings:vm

它会告诉你:

拾取_JAVA_OPTIONS:-Xmx1g


推荐