使用Windows在netbeans中忽略最大内存大小

时间:2014-02-19 08:45:08

标签: java memory-management netbeans

我不确定这是否是一个有效的stackoverflow问题!

我在windows xp机器上安装了netbeans。但是这台机器的内存非常有限。由于Netbeans使用大部分内存,我想限制Netbeans使用的内存大小。

从我在page上可以看到的是,我可以在配置文件中使用-J-Xmx256m开关或–J-XX:MaxPermSize开关: ./ etc / netbeans。 CONF

所以我改变了这个:

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:MaxPermSize=256m -J-XX:PermSize=32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true"

我尝试了两种选择,但Netbeans要么没有启动,要么在启动时不支持新策略。当它开始时,我在任务管理器中看到内存增加超过指定的256兆字节的netbeans。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

首先,您需要了解-XX:MaxPermSize-Xmx空格之间的区别:

-Xmx指定Java虚拟机(JVM)的最大内存分配池,其中包含:

  • Eden Space(堆):最初为大多数对象分配内存的池。
  • 幸存者空间(堆):包含在伊甸园空间的垃圾收集中幸存下来的对象的池。
  • Tenured Generation(堆):包含在幸存者空间中存在一段时间的对象的池。

-XX:MaxPermSize是包含虚拟机本身的所有反射数据的池,例如类和方法对象。对于使用类数据共享的Java VM,这一代将分为只读区域和读写区域。

第二:你的netbeans_default_options -J-Xss2m

中有错误的论点
netbeans_default_options="-J-client -J-Xss2m -J-Xms32m ...

您需要将其更改为:

   netbeans_default_options="-J-client -J-Xmx256m -J-Xms32m ...// or something like that

答案 1 :(得分:0)

在Java中有更多类型的内存。使用 MaxPermSize ,您将增加permgen内存的最大值,该内存用于存储有关您的类的“静态”信息。您想增加“动态”数据的内存。这就是堆,并且使用了 -J-Xmx 。您可以使用jvisualvm验证您的设置。

所以要增加你的堆尝试类似:

-J-Xmx512m

如果您使用的是32位Java,那么您的内存在某种程度上仅限于我认为1g。如果您使用无效(太大)设置,Netbeans将无法启动。

内存Netbeans在其内存显示中显示的是PermGenSpace和Heap的添加。再次:查看jvisualvm以控制每种内存类型的已使用设置。