知识大全 Eclipse中进行JVM内存设置

Posted

篇首语:风华是一指流砂,苍老是一段年华。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Eclipse中进行JVM内存设置相关的知识,希望对你有一定的参考价值。

Eclipse中进行JVM内存设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    本文向大家简单介绍一下进行JVM内存设置几种方法 安装Java开发软件时 默认安装包含两个文件夹 一个JDK(Java开发工具箱) 一个JRE(Java运行环境 内含JVM) 其中JDK内另含一个JRE 如果只是运行Java程序 则JRE已足够 而JDK则只有开发人员才用到 这里将为大家介绍设置JVM内存分配的几招         Eclipse中JVM内存设置        eclipse ini内存设置        vmargs Xms M Xmx M XX:PermSize= M XX:MaxPermSize= M        这里有几个问题         各个参数的含义什么?        为什么有的机器我将 Xmx和 XX:MaxPermSize都设置为 M之后Eclipse可以启动 而有些机器无法启动?        为何将上面的参数写入到eclipse ini文件Eclipse没有执行对应的设置?        下面我们对这些问题一一进行回答 相信通过对这些问题的解释你对JVM内存设置也就有了一定的认识         各个参数的含义什么?        参数中 vmargs的意思是设置JVM参数 所以后面的其实都是JVM的参数了 我们首先了解一下JVM内存管理的机制 然后再解释每个参数代表的含义         堆(Heap)和非堆(Non heap)内存        按照官方的说法 Java虚拟机具有一个堆 堆是运行时数据区域 所有类实例和数组的内存均从此处分配 堆是在Java虚拟机启动时创建的 在JVM中堆之外的内存称为非堆内存(Non heapmemory) 可以看出JVM主要管理两种类型的内存 堆和非堆 简单来说堆就是Java代码可及的内存 是留给开发人员使用的 非堆就是JVM留给自己用的 所以方法区 JVM内部处理或优化所需的内存(如JIT编译后的代码缓存) 每个类结构(如运行时常数池 字段和方法数据)以及方法和构造方法的代码都在非堆内存中         堆内存分配        JVM初始分配的内存由 Xms指定 默认是物理内存的 / ;JVM最大分配的内存由 Xmx指定 默认是物理内存的 / 默认空余堆内存小于 %时 JVM就会增大堆直到 Xmx的最大限制 空余堆内存大于 %时 JVM会减少堆直到 Xms的最小限制 因此服务器一般设置 Xms Xmx相等以避免在每次GC后调整堆的大小         非堆内存分配        JVM使用 XX:PermSize设置非堆内存初始值 默认是物理内存的 / ;由XX:MaxPermSize设置最大非堆内存的大小 默认是物理内存的 /         JVM内存限制(最大值)        首先JVM内存限制于实际的最大物理内存(废话!呵呵) 假设物理内存无限大的话 JVM内存的最大值跟操作系统有很大的关系 简单的说就 位处理器虽然可控内存空间有 GB 但是具体的操作系统会给一个限制 这个限制一般是 GB GB(一般来说Windows系统下为 G G Linux系统下为 G G) 而 bit以上的处理器就不会有限制了         为什么有的机器我将 Xmx和 XX:MaxPermSize都设置为 M之后Eclipse可以启动 而有些机器无法启动?        通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种 堆内存和非堆内存 另外JVM最大内存首先取决于实际的物理内存和操作系统 所以说设置VM参数导致程序无法启动主要有以下几种原因         )参数中 Xms的值大于 Xmx 或者 XX:PermSize的值大于 XX:MaxPermSize;        ) Xmx的值和 XX:MaxPermSize的总和超过了JVM内存的最大限制 比如当前操作系统最大内存限制 或者实际的物理内存等等 说到实际物理内存这里需要说明一点的是 如果你的内存是 MB 但实际系统中用到的并不可能是 MB 因为有一部分被硬件占用了         为何将上面的参数写入到eclipse ini文件Eclipse没有执行对应的设置?        那为什么同样的参数在快捷方式或者命令行中有效而在eclipse ini文件中是无效的呢?这是因为我们没有遵守eclipse ini文件的设置规则         参数形如 项值 这种形式 中间有空格的需要换行书写 如果值中有空格的需要用双引号包括起来 比如我们使用 vmC:\\Java\\jre \\bin\\javaw exe参数设置虚拟机 在eclipse ini文件中要写成这样         vm        C:\\Java\\jre \\bin\\javaw exe        按照上面所说的 最后参数在eclipse ini中可以写成这个样子         vmargs        Xms M        Xmx M        XX:PermSize= M        XX:MaxPermSize= M        实际运行的结果可以通过Eclipse中 Help AboutEclipseSDK 窗口里面的 ConfigurationDetails 按钮进行查看         另外需要说明的是 Eclipse压缩包中自带的eclipse ini文件内容是这样的         showsplash        eclipse platform        launcher XXMaxPermSize        m        vmargs        Xms m        Xmx m        其中–launcher XXMaxPermSize(注意最前面是两个连接线)跟 XX:MaxPermSize参数的含义基本是一样的 我觉得唯一的区别就是前者是eclipse exe启动的时候设置的参数 而后者是eclipse所使用的JVM中的参数 其实二者设置一个就可以了 所以这里可以把–launcher XXMaxPermSize和下一行使用#注释掉         其他的启动参数 如果你有一个双核的CPU 也许可以尝试这个参数         XX:+UseParallelGC        让GC可以更快的执行 (只是JDK 里对GC新增加的参数) cha138/Article/program/Java/hx/201311/26837

相关参考

知识大全 关于设置Java虚拟机(JVM)的内存问题

关于设置Java虚拟机(JVM)的内存问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近做

知识大全 Linux和Windows下的Tomcat JVM内存设置

Linux和Windows下的TomcatJVM内存设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 eclipse.ini内存设置各参数含义

  vmargsXmsMXmxMXX:PermSize=MXX:MaxPermSize=M   这里有几个问题   各个参数的含义什么?&n

知识大全 巧解Tomcat中JVM内存溢出问题

巧解Tomcat中JVM内存溢出问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  你对Tomc

知识大全 详解JVM内存结构组成

详解JVM内存结构组成  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  你对JVM内存结构是否了解

知识大全 深入了解JVM内存结构

深入了解JVM内存结构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  你对JVM内存结构是否熟悉

知识大全 MyEclipse内存不足之JVM内存浅谈

MyEclipse内存不足之JVM内存浅谈  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  MyE

知识大全 JVM优化:缩短eclipse的启动时间

JVM优化:缩短eclipse的启动时间  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近自从

知识大全 JVM内存组成及分配

JVM基础:JVM内存组成及分配  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 JVM内存结构

JVM内存结构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ()类装载子系统  装载连接初始化