Java 如何增加JVM堆大小

Java 如何增加JVM堆大小,java,jvm,heap-memory,Java,Jvm,Heap Memory,我遵循了Stack Overflow中的一些帖子,以增加JVM堆的大小。 我按照上面链接的建议设置了环境变量 我执行下面的程序,检查最大堆大小是多少 public class GetHeapSize { public static void main(String[]args){ //Get the jvm heap size. long heapSize = Runtime.getRuntime().totalMemory();

我遵循了Stack Overflow中的一些帖子,以增加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);
        }

}
我在设置前和设置后获得的输出与16252928

有人能建议我如何增加堆大小吗?

totalMemory()报告堆的当前大小。如果您想要堆将增长到的最大大小,请调用。javadoc说:

“返回Java虚拟机将尝试使用的最大内存量。如果没有固有限制,则将返回Long.MAX_值。”


然后说数量以字节为单位。

在常见情况下,堆大小会动态增长,因此可以使用-Xmx选项限制堆的高大小,使用-Xms选项设置堆的开始大小,并且可以在开始时使它们相同,这样JVM就不会将资源用于动态内存操作。另外,使用更具信息性的JMX方法通过MemoryMXBean获得堆大小可能会让您感兴趣

MemoryMXBean MEMORYMXBEAN = ManagementFactory.getMemoryMXBean();

如果你尝试简单的方法,比如java-Xmx1g$这里的主类名称$我想永久性地设置堆大小,因为我要做指纹检测,当文件大小超过100MB时,它会内存不足“我想永久性地设置堆大小”,是的,但它只适用于这一个应用你可以让@Scorpion的建议在那一个应用程序中运行一次。你可以设置一种启动它的方法,确保它总是有那么多内存。看看到底使用了什么命令行选项会很有帮助。根据你的建议,我得到了259522560,相当于247.5MB,但我把环境变量设为512M,我无法解释。我只是重复javadoc所说的。我建议您检查您认为正在使用的-Xmx和-Xms设置是否在JVM启动时实际传递给JVM。