本文将介绍如何对付MyEclipse内存不足的问题,这里将涉及MyEclipse设置JVM内存的方法。希望这些对大家有作用。

假如没有进行设置的话,在运用MyEclipse的经常出现如下图所示内存不足的提示。

巧借MyEclipse设置JVM打破内存约束(myeclipse jvm内存设置)  MyEclipse 设置 jvm 第1张

提示中说的很理解:“MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains.”意思是说当时只要小于5%的非堆内存是闲暇的。所以咱们只要将这个值设置大一些就能够了。

提示中给出了MyEclipse设置JVM的参数:

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M

这儿有几个MyEclipse设置JVM问题:

1. 各个参数的意义什么?

2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse能够发动,而有些机器无法发动?

3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有履行对应的设置?

下面咱们逐个进行答复

1. 各个参数的意义什么?

参数中-vmargs的意思是设置JVM参数,所以后边的其实都是JVM的参数了,咱们首要了解一下JVM内存办理的机制,然后再解说每个参数代表的意义。

堆(Heap)和非堆(Non-heap)内存

依照官方的说法:“Java 虚拟机具有一个堆,堆是运转时数据区域,一切类实例和数组的内存均从此处分配。堆是在 Java 虚拟机发动时创立的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。能够看出JVM首要办理两种类型的内存:堆和非堆。简略来说堆便是Java代码可及的内存,是留给开发人员运用的;非堆便是JVM留给自己用的,所以办法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运转时常数池、字段和办法数据)以及办法和结构办法的代码都在非堆内存中。

堆内存分配

JVM初始分配的内存由-Xms指定,默许是物理内存的1/64;JVM***分配的内存由-Xmx指定,默许是物理内存的1/4。默许空余堆内存小于40%时,JVM就会增大堆直到-Xmx的***约束;空余堆内存大于70%时,JVM会削减堆直到-Xms的最小约束。因而服务器一般设置-Xms、-Xmx持平以防止在每次GC 后调整堆的巨细。
非堆内存分配

JVM运用-XX:PermSize设置非堆内存初始值,默许是物理内存的1/64;由XX:MaxPermSize设置***非堆内存的巨细,默许是物理内存的1/4。

JVM内存约束(***值)

首要JVM内存约束于实践的***物理内存(废话!呵呵),假定物理内存无限大的话,JVM内存的***值跟操作体系有很大的联络。简略的说就32位处理器尽管可控内存空间有4GB,可是详细的操作体系会给一个约束,这个约束一般是2GB-3GB(一般来说Windows体系下为1.5G-2G,Linux体系下为2G-3G),而64bit以上的处理器就不会有约束了。
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse能够发动,而有些机器无法发动?

经过上面临JVM内存办理的介绍咱们现已了解到JVM内存包含两种:堆内存和非堆内存,别的JVM***内存首要取决于实践的物理内存和操作体系。所以说设置VM参数导致程序无法发动首要有以下几种原因:

1) 参数中-Xms的值大于-Xmx,或许-XX:PermSize的值大于-XX:MaxPermSize;

2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的***约束,比方当时操作体系***内存约束,或许实践的物理内存等等。提到实践物理内存这儿需求阐明一点的是,假如你的内存是1024MB,但实践体系中用到的并不可能是1024MB,由于有一部分被硬件占用了。

3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有履行对应的设置?

那为什么相同的参数在快捷方式或许命令行中有用而在eclipse.ini文件中是无效的呢?这是由于咱们没有恪守eclipse.ini文件的设置规矩:

参数形如“项 值”这种方式,中心有空格的需求换行书写,假如值中有空格的需求用双引号包含起来。比方咱们运用-vm C:\Java\jre1.6.0\bin\javaw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:

-vm
C:\Java\jre1.6.0\bin\javaw.exe
依照上面所说的,***参数在eclipse.ini中能够写成这个姿态:

  1. -vmargs
  2. -Xms128M
  3. -Xmx512M
  4. -XX:PermSize=64M
  5. -XX:MaxPermSize=128M

实践运转的成果能够经过Eclipse中“Help”-“About Eclipse SDK”窗口里边的“Configuration Details”按钮进行检查。

别的需求阐明的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:

  1. -showsplash
  2. org.eclipse.platform
  3. --launcher.XXMaxPermSize
  4. 256m
  5. -vmargs
  6. -Xms40m
  7. -Xmx256m

其间–launcher.XXMaxPermSize(留意最前面是两个连接线)跟-XX:MaxPermSize参数的意义基本是相同的,我觉得仅有的差异便是前者是eclipse.exe发动的时分设置的参数,而后者是Eclipse所运用的JVM中的参数。其实二者设置一个就能够了,所以这儿能够把–launcher.XXMaxPermSize和下一行运用#注释掉。经过MyEclipse设置JVM防止内存不足的问题就介绍到这儿。

【修改引荐】

  1. 装置JDK后JRE与JVM联络浅谈
  2. 监督JSP中JVM可用内存
  3. JDK、JRE、JVM之间的联络
  4. Java之父:咱们看中的并非Java言语,而是JVM
  5. Java虚拟机(JVM)中的内存设置详解
转载请说明出处
知优网 » 巧借MyEclipse设置JVM打破内存约束(myeclipse jvm内存设置)

发表评论

您需要后才能发表评论