- 浏览: 97813 次
- 性别:
- 来自: 北京
最新评论
-
vera_sq:
怎么得到的总是null呢?
关于Class.getClassLoader()空指针. -
729251283:
你的这种做法对吗?用你的方法不成功 。
maven tomcat结合,热部署,调试 -
mouer:
需要开启snmp
基于SNMP和JRobin的监控 -
liliugen:
跑步起来的代码,。无用
基于SNMP和JRobin的监控
性能优化从身边做起。
首先建立评估体系,将workspace里所有的项目close掉,关闭eclipse。优化的用例就是启动eclipse,open一个项目,eclipse会自动build这个项目,保证没有感觉到明显的卡,也就是没有full GC。
开始:
eclipse.ini里加入打印gc情况的参数:
-XX:+PrintGCTimeStamps |
-XX:+PrintGCDetails |
-verbose:gc |
-Xloggc:gc.log |
这样eclipse在运行过程中会记录gc日志,显示详细的gc情况,并打印在gc.log中,通过分析这个日志寻找eclipse的性能瓶颈和优化方式。
我最初的参数只是在原版基础上调了堆大小
-Xms512m |
-Xmx512m |
将堆初始化和最大值设为一样,消除堆大小根据当前堆使用情况而变化带来的影响。
启动eclipse,发现gc.log里打出了很多full gc的日志
在启动的6秒多时间里共出现了8次full gc,所以启动慢,觉得启动时候挺卡的。从日志里可以看出来 FullGC主要是在回收tenured区和Perm区,其中Perm一直都是快满的状态,Perm : 24574K->24554K(24576K),Perm大小在不断调整,所以需要固定Perm区的大小,保证够用,eclipse.ini里加入
-XX:PermSize=64m |
-XX:MaxPermSize=64m |
再启动:发现没有full gc了只有数量比较多的minor gc,挑启动开始到启动完成的第一条和最后一条日志
….
6.383: [GC 6.383: [DefNew: 18880K->1985K(21184K), 0.0055311 secs] 46992K->30098K(68040K), 0.0055694 secs]
这6秒中GC日志打了69次, 而内存回收率还是蛮高的 young区18880-1985=16895 jvm 46992-30098=16894 都快接近100%了,可以看出young区是由小到大在不断调整大小,所以不断GC,因此设一个初始值吧,据说设置heap的1/4比较好,那就是128M,所以eclipse.ini加入
-Xmn128m |
再重启,发现GC日志就四条了,eclipse启动自然快了
2.182: [GC 2.182: [DefNew: 115944K->1852K(118016K), 0.0221714 secs] 115944K->11466K(511232K), 0.0222142 secs] [Times: user=0.00 sys=0.02, real=0.02 secs]
3.987: [GC 3.987: [DefNew: 106779K->12531K(118016K), 0.0378228 secs] 116393K->22145K(511232K), 0.0378692 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
5.377: [GC 5.377: [DefNew: 117491K->9403K(118016K), 0.0513728 secs] 127105K->31364K(511232K), 0.0514133 secs]
但是,启动后open我的多个项目,这些项目互相依赖,eclipse自动build,感觉有点小卡,发现日志里多了4次full GC,所以就卡了…
103.759: [Full GC (System) 103.759: [Tenured: 81882K->66784K(393216K), 0.3287387 secs] 185350K->66784K(511232K), [Perm : 53464K->53414K(65536K)], 0.3287897 secs] [Times: user=0.33 sys=0.00, real=0.33 secs]
这个时候Tenured区和Perm都还没到很接近最大值,但是为什么还有full GC呢,开始以为是JVM悲观认为Tenured区剩余空间不足以应对下一次minor GC 所以进行了full GC调整Tenured空间,索性直接增加了堆最大值到-Xmx728m(工作电脑的内存是3.5G),但重启后full gc还是有4次,而且有几次minor GC用的时间超过了0.1秒,这是因为增加了堆大小,导致GC用时也增加了,不能接受。所以还是改回-Xmx512m。
再仔细观察日志,发现Full GC (System) 字样,这个意思是eclipse里调用了System.gc()手动触发了系统GC,好吧,哥已经给你分配足够空间了,你就省省吧,在eclipse.ini里加入:
-XX:+DisableExplicitGC |
这样就差不多了,整个过程没有出现full gc,再编码2个小时,中间只出现了一次full gc,在open build某50W行+的代码的时候,eclipse还是卡了…
最后又稍微调了一下各代的大小,得到目前的参数:
-Xms512m |
-Xmx512m |
-XX:PermSize=96m |
-XX:MaxPermSize=96m |
-Xmn168m |
-XX:+DisableExplicitGC |
另外没有去调GC策略,主要是觉得eclipse是客户端程序,默认的client单线程的GC策略应该是比较适合的,以后有时间再试试看吧。
发表评论
-
eclipse woking sets
2011-04-07 17:19 1139随着工作时间的增加,我的eclipse中管理的工程也越来越多, ... -
c3p0 or dbcp or proxool
2009-11-20 16:20 976<!-- JDBC驱动程序 --> <p ... -
Hibernate 本地SQL查询SQLQuery(转帖 Derek.Guo JAVA BLOG)
2009-12-02 20:53 1082使用SQLQuery 对原生SQL查询执行的控制是通过SQL ... -
重读hibernate参考手册
2009-12-03 19:24 653一.关于inverse维护关系 ... -
cp命令全覆盖..
2009-12-16 16:09 918情景再现:要把A文件夹里的内容复制到B文件夹中(包括子目录), ... -
用Simple framework OO的操作XML..
2009-12-22 11:52 659具体信息参见: http://simple.sourcefor ... -
oracle一些操作
2009-12-29 18:00 6281.查看表空间: SELECT A.TABLESPACE ... -
SnmpHibernate
2009-12-29 18:57 980SnmpHibernate is a MIB/Object m ... -
JRobin学习---RRDTool的基本语法
2010-01-04 08:52 1220rrdtool 建立语法 (rrdtool create) ... -
JRobin学习---JRobin的基本语法
2010-01-04 11:39 1242Create new RRD file rrd: rrdt ... -
windows snmp 安装配置
2010-01-04 17:43 16961.查看服务列表,看看有没以下服务: 2.如没有,下载 ... -
putty之pscp命令详解
2010-02-26 11:56 1585pscp是putty安装包(免费)所带的远程文件传输工具,使用 ... -
终端服务器超出最大允许连接数
2010-03-05 13:34 686系统:windows2003 问题:用远程桌面登录系统时,提 ... -
vim使用教程图
2010-03-19 09:27 0... -
UltraEdit技巧
2010-04-23 03:16 505#1) 查找替换回车 ^p #2) 通配符 (要选中正则表达 ... -
[转]Spring 笔记
2010-04-29 12:01 650Spring 笔记 笔记总结到位,非常经典 ... -
[总结]Ant安装及使用
2010-05-07 11:22 913最近无事,回头看看Ant,以前项目中没有系统性的学习过,仅仅照 ... -
eclipse 重构
2010-07-27 19:26 863Eclipse中的重构类型 如果你看一下Eclipse ... -
oracle instant client 配置指南
2010-10-09 16:17 7511、下载oracle instant client。注意 ... -
Hibernate Annotation
2010-10-13 17:26 697@Entity ...
相关推荐
Java的安装;...优化JVM参数提高eclipse运行速度;Tomcat JVM优化一例;linux下Nginx+tomcat整合的安装与配置;Memcached安装;memcache集群配置;JMS安装;JMS集群配置;Nginx反向代理;防火墙配置
设置Eclipse的JVM参数
jvm参数优化后,tomcat稳定可靠,附件为通过长时间在线测试的配置参数文件
jvm 配置jvm参数 配置jvm参数
JVM参数设置,提供java虚拟机运行时的参数设置
1、JVM参数推荐 2、Java运行时数据区 3、JVM内存模型 4、堆的内存划分 5、垃圾回收(GC) 6、JVM参数汇总
如何配置jvm参数,并且调优,适合各路开发者,
可通过设置jvm参数,提高系统性能。内含一些系统原理。
常用jvm参数都在这张图中,参考起来方便,是国外大神整理的
JVM参数使用说明
JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化),供大家查阅!!!!!!!!!!!!!!
IBM JVM参数选项 虚拟机参数
jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识...
JVM优化3(Tomcat参数调优,JVM参数调优,jvm字节码,代码优化).zip
深入JVM内核—原理、诊断与优化视频教程 深入JVM内核—原理、诊断与优化视频教程
(中英文)JVM 参数详解,用心整理成Excel文档。包含所有近100条JVM参数的详细说明及设置方法,中英文对照,极方便阅读。转载请标明我这的源地址:http://download.csdn.net/download/xiucaiyao/10257573
其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容; 其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用; 本文...
你对Eclipse中JVM内存设置方法是否熟悉,这里通过几个问题向大家解释一下,安装Java开发软件时,默认安装包含两个文件夹,一个JDK(Java开发工具箱),一个JRE(Java运行环境,内含JVM),其中JDK内另含一个JRE。
运行参数如下: eclipse.exe -vmargs -Xverify:none -XX:+UseParallelGC -XX:PermSize=20M <br>-------------- <br>JVM 提供了各种用于调整内存分配和垃圾回收行为的标准开关和非标准...
常用的JVM参数,适合于线上关键业务系统,通用参数设置经验