最全的Eclipse 启动优化、内存优化 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 这里有几个问题: 1
各个参数的含义什么
为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动
为何将上面的参数写入到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 后调 整 堆的大