如何永久增加Java堆内存?
2022-09-01 17:04:36
我有一个Java堆内存问题。我用java开发了一个客户端服务器应用程序,它作为Windows服务运行,它需要超过512MB的内存。我有2GB的RAM,但当我运行我的应用程序时,它会引发异常
内存不足错误:java 堆空间
但是我已经在java控制面板中设置了堆大小(最大512MB),我仍然得到同样的错误。我无法通过命令行设置堆大小,因为我的应用程序作为 Windows 服务运行,所以我如何增加默认堆大小?
我有一个Java堆内存问题。我用java开发了一个客户端服务器应用程序,它作为Windows服务运行,它需要超过512MB的内存。我有2GB的RAM,但当我运行我的应用程序时,它会引发异常
内存不足错误:java 堆空间
但是我已经在java控制面板中设置了堆大小(最大512MB),我仍然得到同样的错误。我无法通过命令行设置堆大小,因为我的应用程序作为 Windows 服务运行,所以我如何增加默认堆大小?
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);
}
}
这对我有用:
导出_JAVA_OPTIONS=“-Xmx1g”
重要的是你没有空间,因为对我来说它不起作用。我建议只是复制和粘贴。然后我跑了:
java -XshowSettings:vm
它会告诉你:
拾取_JAVA_OPTIONS:-Xmx1g