Netbeans中的vm选项是什么? 以下行的每个变量和memmory大小的含义是什么
-Xms128m -Xmx128m -XX:PermSize=64m -XX:MaxPermSize=128m
我从使用permgen-space
的堆栈溢出问题中得到了这一行任何想法?
答案 0 :(得分:3)
标志Xmx
指定Java Virtual Machine
(JVM
)的最大内存分配池,而Xms
指定初始内存分配池。
这意味着您的JVM
将以Xms
的内存量启动,并且最多可以使用Xmx
个内存量。
Xms
标志没有默认值,Xmx
通常默认值为256MB。
更多信息 here
-XX:PermSize -XX:MaxPermSize 用于设置Permanent Generation
的大小。
Permanent Generation
:Permanent Generation
是保存类文件的位置。这些是编译类和jsp
页面的结果。如果此空间已满,则会触发完整垃圾收集。如果Full Garbage Collection
无法清除旧的未引用类,并且没有剩余空间来扩展永久空间,则抛出内存不足错误(OOME
)并且JVM
将崩溃。
更多信息 here
从 Java 8 开始,permgen
空间和此设置都已消失。
答案 1 :(得分:0)
答案 2 :(得分:0)
-Xms128m -Xmx128m -XX:PermSize = 64m -XX:MaxPermSize = 128m
您的命令上方只是忽略默认的VM(Vritual Machine)设置,并将自定义内存设置覆盖为netbeans。
标志Xmx指定Java虚拟机(JVM)的最大内存分配池,而Xms指定初始内存分配池。
这意味着您的JVM将以Xms的内存量启动,并且最多可以使用Xmx的内存量。例如,启动如下所示的JVM将启动256MB内存,并允许该进程使用最多2048MB的内存:
java -Xmx2048m -Xms256m
内存标志也可以用多种大小指定,例如千字节,兆字节等。
-Xmx1024k
-Xmx512m
-Xmx8g
Xms标志没有默认值,Xmx的默认值通常为256MB。这些标志的常见用法是遇到java.lang.OutOfMemoryError。
JVM PermGen
Sun JVM有一个PermGen空间的概念,它是一个单独的分配的内存区域,用于例如分配类。这实际上是大多数人遇到问题的内存区域,而不是正常的堆空间,但作为普通用户,当eclipse(或者更确切地说是jvm)只是说“Out of Memory”或者仅仅是崩溃。
此解决方案是向vmargs添加MaxPermSize值。例如我通常使用-XX:MaxPermSize = 128m来确保我没有用完PermGen空间。