eclipse优化以及jvm内存的讲解与设置
来源:互联网 发布:网络维护的工作内容 编辑:程序博客网 时间:2024/05/01 13:14
首先了解下JVM中几个相关的概念:
Xms:最小堆大小
Xmx:最大堆大小
Xmn:年轻代堆大小
Xss:每个线程的堆大小
PermSize:初始持久代大小
MaxPermSize:最大持久代大小
一般Xms、Xmx设置相同,PermSize、MaxPermSize设置相同,这样可以避免伸缩堆大小带来的性能损耗。
首先eclipse安装根目录下打开eclipse.ini,加上配置:
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
目的是运行eclipse的时候可以打出详细gc过程。
启动eclipse,然后打开gc.log一看,哇塞启动一次就做了几十次GC,包括不少次Full GC,着手优化……
先解决Full GC的问题:
3.159: [Full GC 3.159: [Tenured: 22716K->26133K(35780K), 0.1116536 secs] 38493K->26133K(51908K), [Perm : 20479K->20479K(20480K)], 0.1117614 secs] [Times: user=0.11 sys=0.00, real=0.11 secs]
3.706: [Full GC 3.706: [Tenured: 26133K->27935K(43556K), 0.1235449 secs] 40042K->27935K(63204K), [Perm : 24575K->24575K(24576K)], 0.1236474 secs] [Times: user=0.13 sys=0.00, real=0.13 secs]
……
如上GC日志可以看出,Full GC主要是针对Tenured、Perm区的GC,好那先调整Perm大小,指定充裕的持久代区域,eclipse.ini中加入:
-XX:MaxPermSize=128m
再次启动看gc.log,Full GC没有了,但是还有很多次普通GC,说明还是需要进一步优化。
eclipse的初始堆大小分配得很小,因此不利于年轻代堆大小的分配,如果设置的年轻代堆大小Xmn大于最小堆大小Xms,eclipse将无法启动。
因此,将Xms调整为512m,重启动后观察GC大幅减少。
最后调整Xmn,年轻代堆大小,经过反复比较后,发现设置“-Xmn256m”效果最优。
优化后的GC日志:
5.422: [GC 5.422: [DefNew: 235968K->12433K(235968K), 0.0989335 secs] 236976K->39296K(498112K), 0.0990229 secs]
在接近6秒的启动时间内,eclipse总共只做了2次普通GC回收,怎么样效果明显吧!
一般在不对eclipse进行相关设置的时候,使用eclipse总是会觉得启动好慢,用起来好卡,其实只要对eclipse的相关参数进行一些配置,就会有很大的改善。
加快启动速度
1.在eclipse启动的时候,它总是会搜索让其运行的jre,往往就是这个搜索过程让eclipse启动变慢了。(没设置时,等2-3s出现进度条,设置后直接出现进度条)
只要在eclipse.ini中加入-vm的参数就可以了
2.取消所有启动时要激活的插件(在用时激活也一样)和其它的相关的在启动时执行的操作。
3.关闭自动更新
减少jvm内存回收引起的eclipse卡的问题
这个主要是jvm在client模式,进行内存回收时,会停下所有的其它工作,带回收完毕才去执行其它任务,在这期间eclipse就卡住了。所以适当的增加jvm申请的内存大小来减少其回收的次数甚至不回收,就会是卡的现象有明显改善。
主要通过以下的几个jvm参数来设置堆内存的:
我的配置(2g内存的笔记本):
还有其它的相关参数可以看看下面的参考材料,很有启发的:
-XX:+UseParallelGC 使用并发内存回收
-XX:+DisableExplicitGC 禁用System.gc()的显示内存回收
eclipse相关设置来来减少卡的现象
1.关闭自动构建。在启用时,每保存一下,eclipse就会自动为我们构建整个项目,这样对于大的项目来说,每次保存时都会造成很卡。其实自动构建完全没有必要,只要保证在运行前构建一次就ok了,eclipse也会在运行前自动为我们构建,所以关闭是最明智的选择。
2.关闭拼写检查设置
参考材料
jvm启动参数大全:http://www.blogjava.net/midstr/archive/2008/09/21/230265.html
jvm结构的一些知识(其中的堆的构成):http://hllvm.group.iteye.com/group/wiki/2905-JVM
jvm堆知识:http://ruijf.iteye.com/blog/1028455
eclipse启动调优:http://www.iteye.com/topic/756538
eclipse自带的help contents(搜索"Running Eclipse"可以找到启动相关的配置)
- eclipse优化以及jvm内存的讲解与设置
- eclipse JVM内存的设置
- Eclipse设置JVM内存
- eclipse中jvm内存的设置
- eclipse中jvm内存的设置
- Eclipse设置JVM的内存参数
- Eclipse-设置JVM的内存参数
- Eclipse 跑Java的内存设置(JVM内存设置)
- eclipse 内存设置优化
- Eclipse中JVM内存设置
- Eclipse中JVM内存设置
- Eclipse中设置JVM内存
- Eclipse 中设置JVM 内存
- Eclipse中设置JVM内存
- Eclipse 中设置JVM 内存
- Eclipse 中设置JVM 内存
- Eclipse中设置JVM内存
- Eclipse中设置JVM内存
- 使用xshell远程软件在linux OS与Windows OS之间进行文件传递
- 国产操作系统逆袭难题:国外起步早 垄断性强
- Ubuntu 12.04 安装 Apache2+PHP5+MySQL
- Ubuntu图形界面环境下启动应该程序:
- 学霸是怎样炼成的(大一上篇)
- eclipse优化以及jvm内存的讲解与设置
- 串行口API的使用
- 数据结构实验之求二叉树后序遍历和层次遍历
- Android突破二之WindowManager、Display、DisplayMetrics类
- Diameter协议
- 如果当初学习编程时能有人给我这些忠告该多好
- oracle中to_char后查询当天在今年的第几周ww和iw的区别
- 15个你可能不知道的开源云平台
- Unity3d TweenPosition.Begin()的使用浅析