MyEclipse内存不足之JVM内存浅谈

MyEclipse内存不足之JVM内存浅谈假如没有执行 配置的话,在运用 MyEclipse的经常出现如下图所示内存不足的提示。 
   
  MyEclipse内存不足之JVM内存浅谈图1 
  提示中说的很明白:“MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains.”意思是说当前只有小于5%的非堆内存是空闲的。所以咱们只要将这个值配置大一些就可以了。 
  提示中给出了配置的参数: 
  -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:Maxp ermSize=128M 
  MyEclipse内存不足之JVM内存浅谈的多个疑问: 
  1. 各个参数的意思什么? 
  2. 为什么有的机器我将-Xmx和-XX:Maxp ermSize都配置为512M之后Eclipse可以启动,而有些机器无法 启动? 
  3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的配置 ? 
  下面咱们就MyEclipse内存不足之JVM内存一一对一些观点执行 回答 
  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:Maxp ermSize配置最大非堆内存的大小,默认是物理内存的1/4。 

posted @ 2015-12-11 09:35  蓝枫_yong  阅读(419)  评论(0编辑  收藏  举报