如何增加Java堆内存永久?(how to increase java heap memory pe

2019-06-26 11:02发布

我有一个问题与Java堆内存。 我开发了运行为Windows服务它需要比512MB内存更在java中一个客户端服务器应用程序。 我有2GB的RAM,但是当我运行我的应用程序,它抛出一个异常

内存不足错误:java的堆空间

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

Answer 1:

请注意,增加Java堆大小以下的java.lang.OutOfMemoryError:Java堆空间是相当往往只是一个短期的解决办法。

这意味着,即使你增加从512 MB默认的Java堆大小,以让我们说2048 MB,你还可以在某些时候得到这个错误,如果你正在处理一个内存泄漏。 要问的主要问题是,你为什么要摆在首位获得这个OOM错误? 它是一个真正的XMX值过低或只是另一个问题的症状?

当开发一个Java应用程序,它始终是了解早期的静态和动态内存占用的要求是至关重要的,这将有助于防止以后复杂的OOM问题。 的JVM X毫秒&XMX设置适当的大小可通过适当的应用程序分析和负载测试来实现。



Answer 2:

Java虚拟机需要该设定的初始和最大堆大小两个命令行参数:-Xms和-Xmx。 您可以添加一个名为_JAVA_OPTIONS系统环境变量,并设置堆大小值存在。
例如,如果你愿意,你可以使用一个512Mb的初始和1024MB最大堆大小:

在Windows下:

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);
    }
}


Answer 3:

如果你需要增加保留内存,还有VM参数-Xms和-Xmx,使用如-Xms512m -Xmx512m。 还有参数-XX:MaxPermSize参数=256米其改变存储器保留用于永久代

如果您的应用程序作为Windows服务,在控制面板 - >管理工具 - >服务,你可以添加一些运行参数为您服务



Answer 4:

这为我工作:

出口_JAVA_OPTIONS = “ - Xmx1g”

这一点很重要,你有没有空间,因为对我来说,没有工作。 我建议只是复制和粘贴。 然后我跑:

java的-XshowSettings:VM

它会告诉你:

拿起_JAVA_OPTIONS:-Xmx1g



文章来源: how to increase java heap memory permanently?