myeclipsejava虚拟机jvm参数设置(有效).doc

myeclipsejava虚拟机jvm参数设置(有效).doc

ID:59253883

大小:18.00 KB

页数:3页

时间:2020-09-08

myeclipsejava虚拟机jvm参数设置(有效).doc_第1页
myeclipsejava虚拟机jvm参数设置(有效).doc_第2页
myeclipsejava虚拟机jvm参数设置(有效).doc_第3页
资源描述:

《myeclipsejava虚拟机jvm参数设置(有效).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MyEclipseJVM内存配置及性能调优在使用MyEclipse的过程中经常出现内存不足的提示:MyEclipsehasdetectedthatlessthan5%ofthe31MBofEdenSpace(Heapmemory)spaceremains.ItisstronglyrecommendedthatyouexitandrestartMyEclipsewithnewvirtualmachinememoryparamterstoincreasethismemory.Failuretodosocanresultindataloss.Recommendedmemoryarguments

2、:-vmargs-Xmx512m-XX:MaxPermSize=256m-XX:ReservedCodeCacheSize=64m提示中说的很明白:“MyEclipsehasdetectedthatlessthan5%ofthe64MBofPermGen(Non-heapmemory)spaceremains.”意思是说当前只有小于5%的非堆内存是空闲的。解决办法:打开Eclipse目录,找到Eclipse.ini配置文件。打开可以看到如下配置信息-vmargs-Xmx256m-XX:MaxPermSize=64m修改如下:-vmargs-Xms512m//配置堆内存的最小值-Xmx51

3、2m//配置堆内存的最大值-XX:PermSize=128M//配置非堆内存的最小值-XX:MaxPermSize=128M//配置非堆内存的最大值l堆(Heap)和非堆(Non-heap)内存按照官方的说法:“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heapmemory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译

4、后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。1)堆内存的分配JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC后调整堆的大小。2)非堆内存的分配JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默

5、认是物理内存的1/4。lJVM性能调优jvm将内存分为new(存放jvm刚分配的java对象)、tenured(存放没被垃圾回收掉的java对象)、perm(存放class、method元信息--代码)三种,其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配;Perm不属于堆内存,由jvm直接分配,但可以通过-XX:PermSize-XX:MaxPermSize等参数调整其大小。New又分为几个部分:1)Eden:Eden用来存放JVM刚分配的对象2)Survivor13)Survivro2:两个Survivor空间一样大,当Eden中的对象

6、经过垃圾回收没有被回收掉时,会在两个Survivor之间来回Copy,当满足某个条件,比如Copy次数,就会被Copy到Tenured。显然,Survivor只是增加了对象在年轻代中的逗留时间,增加了被垃圾回收的可能性。垃圾回收算法可以分为三类,都基于标记-清除(复制)算法:1)Serial算法(单线程)2)并行算法3)并发算法JVM会根据机器的硬件配置对每个内存代选择适合的回收算法,比如,如果机器多于1个核,会对年轻代选择并行算法,关于选择细节请参考JVM调优文档。稍微解释下的是,并行算法是用多线程进行垃圾回收,回收期间会暂停程序的执行,而并发算法,也是多线程回收,但期间不停止应用执行

7、。所以,并发算法适用于交互性高的一些程序。经过观察,并发算法会减少年轻代的大小,其实就是使用了一个大的年老代,这反过来跟并行算法相比吞吐量相对较低。垃圾回收动作执行条件:1)当年轻代内存满时,会引发一次普通GC,该GC仅回收年轻代。需要强调的时,年轻代满是指Eden代满,Survivor满不会引发GC2)当年老代满时会引发FullGC,FullGC将会同时回收年轻代、年老代3)当永久代满时也会引发FullGC,会导致Class、Me

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。