什么是netbeans项目属性中的vm选项?

时间:2014-12-22 09:40:44

标签: java tomcat netbeans

Netbeans中的vm选项是什么? 以下行的每个变量和memmory大小的含义是什么

-Xms128m -Xmx128m -XX:PermSize=64m -XX:MaxPermSize=128m

我从使用permgen-space

的堆栈溢出问题中得到了这一行

任何想法?

3 个答案:

答案 0 :(得分:3)

标志Xmx指定Java Virtual MachineJVM)的最大内存分配池,而Xms指定初始内存分配池。

这意味着您的JVM将以Xms的内存量启动,并且最多可以使用Xmx个内存量。

Xms标志没有默认值,Xmx通常默认值为256MB。

更多信息 here

-XX:PermSize -XX:MaxPermSize 用于设置Permanent Generation的大小。

Permanent GenerationPermanent Generation是保存类文件的位置。这些是编译类和jsp页面的结果。如果此空间已满,则会触发完整垃圾收集。如果Full Garbage Collection无法清除旧的未引用类,并且没有剩余空间来扩展永久空间,则抛出内存不足错误(OOME)并且JVM将崩溃。

更多信息 here

Java 8 开始,permgen空间和此设置都已消失。

对于netbeans选项,请查看herehere

答案 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空间。