为自己所用IDE进行jvm优

首先进行日志输出配置

Eclipse  改动eclipse.ini

IDEA   改动 idea.exe.vmoptions

添加打印日志的配置參数

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-verbose:gc

-Xloggc:cc_gc.log

之后启动IDE,查看cc_gc.log文件

9.818: [GC 9.818: [DefNew:  139776K->17472K(157248K), 0.1119870 secs] 139776K->18556K(506816K),  0.1122030 secs] [Times: user=0.09 sys=0.02, real=0.11 secs]

14.429: [GC 14.430: [DefNew:  157248K->17472K(157248K), 0.2153986 secs] 158332K->50602K(506816K),  0.2155784 secs] [Times: user=0.17 sys=0.03, real=0.22 secs]

21.186: [Full  GC 21.187: [Tenured: 33130K->64738K(349568K), 0.3896917 secs]  182739K->64738K(506816K), [Perm : 16384K->16384K(16384K)], 0.3898639  secs]
[Times: user=0.31 sys=0.03, real=0.39 secs]

28.252: [Full  GC 28.252: [Tenured: 64738K->72853K(349568K), 0.3850680 secs]  113468K->72853K(506816K), [Perm : 20479K->20479K(20480K)], 0.3852719  secs]
[Times: user=0.39 sys=0.00, real=0.38 secs]

30.163: [Full GC 30.163: [Tenured:  72853K->74842K(349568K), 0.4226417 secs] 104230K->74842K(506816K),  [Perm : 24575K->24575K(24576K)], 0.4228340 secs] [Times: user=0.41  sys=0.02, real=0.42
secs]

32.836: [Full GC 32.836: [Tenured:  74842K->65968K(349568K), 0.5620080 secs] 124311K->65968K(506816K),  [Perm : 28671K->28645K(28672K)], 0.5622182 secs] [Times: user=0.56  sys=0.00, real=0.56
secs]

37.398: [Full GC 37.398: [Tenured:  65968K->68840K(349568K), 0.4841606 secs] 134377K->68840K(506816K),  [Perm : 32767K->32767K(32768K)], 0.4843980 secs] [Times: user=0.48  sys=0.00, real=0.49
secs]

44.791: [GC 44.791: [DefNew:  139776K->6749K(157248K), 0.0712144 secs] 208616K->75589K(506816K),  0.0713880 secs] [Times: user=0.06 sys=0.00, real=0.07 secs]

46.151: [Full GC 46.151: [Tenured:  68840K->87682K(349568K), 0.4460944 secs] 151814K->87682K(506816K),  [Perm : 36857K->36857K(36864K)], 0.4462617 secs] [Times: user=0.44 sys=0.00,  real=0.45
secs]

47.559: [Full GC 47.559: [Tenured:  87682K->90045K(349568K), 0.3395155 secs] 180158K->90045K(506816K),  [Perm : 40959K->40959K(40960K)], 0.3396347 secs] [Times: user=0.34  sys=0.00, real=0.34
secs]

49.159: [Full GC 49.159: [Tenured:  90045K->85954K(349568K), 0.4153938 secs] 214420K->85954K(506816K),  [Perm : 45055K->45015K(45056K)], 0.4155009 secs] [Times: user=0.41  sys=0.00, real=0.41
secs]

50.697: [GC 50.697: [DefNew:  139776K->2972K(157248K), 0.0180432 secs] 225730K->88927K(506816K), 0.0181231  secs] [Times: user=0.02 sys=0.00, real=0.02 secs]

51.128: [Full GC 51.128: [Tenured:  85954K->89721K(349568K), 0.2832516 secs] 143886K->89721K(506816K),  [Perm : 49151K->49151K(49152K)], 0.2833462 secs] [Times: user=0.28  sys=0.00, real=0.28
secs]

51.979: [GC 51.979: [DefNew:  139776K->2718K(157248K), 0.0172579 secs] 229497K->92440K(506816K),  0.0173547 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]

52.525: [GC 52.525: [DefNew:  142494K->5601K(157248K), 0.0199793 secs] 232216K->95322K(506816K),  0.0200686 secs] [Times: user=0.03 sys=0.00, real=0.02 secs]

54.030: [Full GC 54.030: [Tenured:  89721K->100007K(349568K), 0.7484057 secs]  211409K->100007K(506816K),
[Perm : 53248K->53248K(53248K)], 0.7486056  secs] [Times: user=0.75 sys=0.00, real=0.75 secs]

56.711: [GC 56.711: [DefNew:  139776K->3470K(157248K), 0.0305333 secs] 239783K->103478K(506816K),  0.0306645 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]

57.267: [GC 57.267: [DefNew:  143246K->5452K(157248K), 0.0320053 secs] 243254K->105460K(506816K), 0.0321151  secs] [Times: user=0.03 sys=0.00, real=0.03 secs]

58.240: [GC 58.241: [DefNew:  145228K->4416K(157248K), 0.0507719 secs] 245236K->104424K(506816K),  0.0509615 secs]

你会看到非常多次FULL GC和很多其它次的MINOR GC

JVM的fullgc
实际上会造成你的应用暂停。所以会给你一种卡死的假象。

而MINOR GC
会在运行你的应用的同一时候运行垃圾收集,所以对你应用的影响较小,但相同效率也就没有fullgc那样快那样彻底。

而造成fullgc的原因,有可能是老年代(Tenured)满了,持久代(Perm)满了,或者显式调用system.gc()

这里能够看出啊是perm满了。至于什么是老年代新生代持久代,要開始从虚拟机的实现開始讲起了…有点长。还是看下<<深入理解java虚拟机>>吧,这个写的深入浅出。

既然是持久代满了,非常easy添加下持久代的容量就好了。所以添加一下參数

#持久代的大小和最大值一样。避免又一次分配

-XX:PermSize=512m

#持久代最大值

-XX:MaxPermSize=512m

重新启动IDE。查看打印日志。你会发现full gc的日志变少了。仅仅是偶尔出现,但minor gc的还是一样的多,如何去除该死的gc呢?

13.286: [GC 13.286: [DefNew:  279616K->34944K(314560K), 0.2190107 secs] 279616K->48613K(1013632K),  0.2192137 secs] [Times: user=0.17 sys=0.05, real=0.22 secs]

48.551: [GC 48.551: [DefNew:  314560K->28346K(314560K), 0.6644487 secs] 328229K->70837K(1013632K),  0.6647003 secs] [Times: user=0.36 sys=0.23, real=0.66 secs]

69.702: [GC 69.702: [DefNew:  307962K->19605K(314560K), 0.3614997 secs] 350453K->88787K(1013632K),  0.3617434 secs] [Times: user=0.36 sys=0.00, real=0.36 secs]

78.648: [GC 78.648: [DefNew:  299221K->10228K(314560K), 0.2022102 secs] 368403K->97761K(1013632K),  0.2023637 secs] [Times: user=0.19 sys=0.00, real=0.20 secs]

85.375: [GC 85.375: [DefNew:  289844K->12827K(314560K), 0.1320774 secs] 377377K->100360K(1013632K),  0.1322965 secs] [Times: user=0.12 sys=0.00, real=0.13 secs]

96.130: [GC 96.130: [DefNew:  292443K->23240K(314560K), 0.1398189 secs] 379976K->110773K(1013632K),  0.1399750 secs] [Times: user=0.14 sys=0.00, real=0.14 secs]

101.912: [GC 101.912: [DefNew:  302856K->18367K(314560K), 0.1574988 secs] 390389K->115683K(1013632K),  0.1576590 secs] [Times: user=0.16 sys=0.00, real=0.16 secs]

103.306: [Full GC (System)  103.306: [Tenured: 97315K->113265K(699072K), 0.9300948 secs]  167525K->113265K(1013632K), [Perm : 64945K->64945K(524288K)], 0.9303121  secs] [Times: user=0.92
sys=0.02, real=0.93 secs]

110.229: [GC 110.229: [DefNew:  279616K->5932K(314560K), 0.0517919 secs] 392881K->119198K(1013632K), 0.0519378  secs] [Times: user=0.05 sys=0.00, real=0.05 secs]

111.312: [GC 111.312: [DefNew:  285548K->5365K(314560K), 0.0235290 secs]  398814K->118631K(1013632K), 0.0236321 secs] [Times: user=0.03
sys=0.00,  real=0.02 secs]

120.657: [GC 120.657: [DefNew:  284981K->8851K(314560K), 0.0674546 secs] 398247K->122116K(1013632K),  0.0676027 secs]

添加年轻代的大小就好了,相应參数例如以下

#初始堆大小

-Xms1024m

#最大堆大小

-Xmx1024m

#年轻代大小

-Xmn512m

这样初始配置就好,假设是eclipse的话,启动时间上你会有一些明显的感觉,但IDEA除了日志上有比較明显的变化。实际上感觉不到非常大的差别。也就是说…你懂的

当然,上面说的是初始化。也就是java对象生的事情,而java对象死的事情呢?就有赖于java的新生代,老年代回收算法和回收实现的问题了。有兴趣的能够看下之前推荐的那本书。

參考链接中也有相关參数的详细解释

Ps:该优化配置仅仅是对启动ide的一些优化。假设开发使用能够再改动成-server以及制定垃圾回收机制等參数

推荐链接:

Java6JVM
參数选项大全

解说blog

版权声明:本文博客原创文章。博客,未经同意,不得转载。

ECLIPSE IDEA 调音 1的更多相关文章

  1. 【Eclipse】Eclipse性能调优

    Eclipse性能调优 eclipse 吃内存_百度搜索 eclipse 性能调优之内存分配 - Defonds 的专栏 - CSDN博客 优化JVM参数提高eclipse运行速度 - Java综合 ...

  2. 素小暖讲JVM:Eclipse运行速度调优

    本系列是用来记录<深入理解Java虚拟机>这本书的读书笔记.方便自己查看,也方便大家查阅. 欲速则不达,欲达则欲速! 这两天看了JVM的内存优化,决定尝试一下,对Eclipse进行内存调优 ...

  3. JVM 调优之 Eclipse 启动调优实战

    本文是我12年在学习<深入理解Java虚拟机:JVM高级特性与最佳实践>时,做的一个 JVM 简单调优实战笔记,版本都有些过时,不过调优思路和过程还是可以分享给大家参考的. 环境基础配置 ...

  4. jvm调音

    jvm性能调优的目地:1)控制jvm的堆栈大小.比方当你的程序年轻代对象在某个时间段产生的比較多的时候,就须要控制年轻代的堆大小. 同一时候还要控制总的JVM大小避免内存溢出 2)控制GC的行为. G ...

  5. windows蜜汁调音

    哈,用的蜂鸣器,我静音了这东西还放. 只能调的很垃圾,但是很好玩. #include<cstdio> #include<windows.h> using namespace s ...

  6. eclipse 性能调优之内存分配

    转自:http://blog.csdn.net/defonds/article/details/6289236 如果觉得自己的 eclipse 比较慢,可以通过修改 %eclipse_home%/ec ...

  7. Ukulele 调音

    正常的持琴姿势时,从上到下依次是:4,3,2,1弦,音从上往下是:G,C,E,A: 3弦 - C - Do - D - Re 2弦 - E - Mi - F - Fa 4弦 - G -So 1弦 - ...

  8. java jvm eclipse 性能调优

    低配配置 -Dfile.encoding=UTF-8-Xms960m-Xmx960m-Xmn384m-Xverify:none-Xss256k-XX:MaxTenuringThreshold=2-XX ...

  9. eclipse jvm调优

    1.初始参数 -Xms256m-Xmx1024m 2.在eclipse.ini中加入,注意一点的是D:/soft/eclipse-jee,这个目录必须存在,启动时并不会自动目录 -verbose:gc ...

随机推荐

  1. 【原创】poj ----- 3009 curling 2 解题报告

    题目地址: http://poj.org/problem?id=3009 题目内容: Curling 2.0 Time Limit: 1000MS   Memory Limit: 65536K Tot ...

  2. shell脚本中的数学运算

    shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法.以后用到的时候能够来看,呵呵 1.错误方法举例 a) var=1+1 echo $var 输出的结果是1+1 ...

  3. Android SVN开发实战的文件夹结构呈现

    svn有一个非常标准的文件夹结构,这是. 例如,该项目是proj.svn地址svn://proj/,然后该标准svn布局是 svn://proj/ | +-trunk +-branches +-tag ...

  4. hdu1978--How many ways(内存搜索)

    How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  5. GCD code block

    在这里积累一些片段,由于备忘录. + (DRClass *)sharedDR{ //创建小黑.正常ap模式仅仅有一个小黑,so static DRClass *aDR = nil; static di ...

  6. Caching-缓存架构与源码分析

    Caching-缓存架构与源码分析 首先奉献caching的开源地址[微软源码] 1.工程架构 为了提高程序效率,我们经常将一些不频繁修改,但是使用了还很大的数据进行缓存.尤其是互联网产品,缓存可以说 ...

  7. 【UVA272】TEX Quotes

    A - TEX Quotes Time Limit:3000MS    Memory Limit:0KB    64bit IO Format:%lld & %llu Submitcid=80 ...

  8. Shell在大数据的魅力时代:从一点点思路百度大数据面试题

    供Linux开发中的同学们,Shell这可以说是一个基本功. 对于同学们的操作和维护.Shell也可以说是一种必要的技能,Shell.对于Release Team,软件配置管理的同学来说.Shell也 ...

  9. paip.提高工作效率--数据绑定到table原则和过程Angular js jquery实现

    paip.提高工作效率--数据绑定到table原理和流程Angular js  jquery实现 html #--keyword 1 #---原理和流程 1 #----jq实现的代码 1 #----- ...

  10. 惠普4431s 笔记本配置

    hp-4431s驱动精灵硬件检测报告 版本:2015.3.26.1363(8.1.326.1363)================================================== ...