你对 Eclipse 中 JVM 内存设置方法是否熟悉,这里通过几个问题向大家解释一下,安装
Java 开发软件时,默认安装包含两个文件夹,一个 JDK(Java 开发工具箱),一个
JRE(Java 运行环境,内含 JVM),其中 JDK 内另含一个 JRE。
本文向大家简单介绍一下进行 JVM
内存设置几种方法,安装 Java 开发软件时,默认
安装包含两个文件夹,一个 JDK(Java 开发工具箱),一个 JRE(Java 运行环境,内含
JVM),其中 JDK 内另含一个 JRE。如果只是运行 Java 程序,则 JRE 已足够;而 JDK 则只
有开发人员才用到。这里将为大家介绍设置 JVM 内存分配的几招。
Eclipse 中 JVM 内存设置
eclipse.ini 内存设置
-vmargs-Xms128M-Xmx512M-XX:PermSize=64M-XX:MaxPermSize=128M
这里有几个问题:
1.各个参数的含义什么?
2.为什么有的机器我将-Xmx 和-XX:MaxPermSize 都设置为 512M 之后 Eclipse 可
以启动,而有些机器无法启动?
3.为何将上面的参数写入到 eclipse.ini 文件 Eclipse 没有执行对应的设置?
下面我们对这些问题一一进行回答,相信通过对这些问题的解释你对 JVM 内存设置也
就有了一定的认识。
1.各个参数的含义什么?
参数中-vmargs 的意思是设置 JVM 参数,所以后面的其实都是 JVM 的参数了,我们
首先了解一下 JVM 内存管理的机制,然后再解释每个参数代表的含义。
堆(Heap)和非堆(Non-heap)内存
按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数
组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在 JVM 中堆之外的内存称为
非堆内存(Non-heapmemory)”。可以看出 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。