JVM 调优总结
避免FullGC:
1.通过调整堆中新生代和幸存代大小,避免因为幸存代不足而让Minor GC后的对象进入老年代。每次Minor GC都有对象进入老年代会造成数次MinorGC后FullGC.
2.减少永久区浪费,JVM进程启动完毕后,永久区变化不大了,这时可以参看Perm是否有剩余空间,节省Perm区的空间分给新生代用。
缩短单次MinorGC所用时间:选择合理的GC算法,并进行GC算法参数调整。比如 低交互性可使用Parallel Scavenge(这种不会尽可能缩短GC时间)
1.tomcat调优
(1) 查看gc统计结果
[hotspot@bogon ~]$ jstat -gcutil | column -t
S0 S1 E O P YGC YGCT FGC FGCT GCT
1.728 62.650
从结果看出,虽然经历了838次MinorGC,但仅发生了1次 FullGC,成功避免了FullGC
(2)查看JVM参数
[hotspot@bogon ~]$ jinfo -flags Attaching to process ID , please wait... Debugger attached successfully. Server compiler detected. JVM version is 23.5-b02 -Djava.util.logging.config.file=/home/hotspot/tomcat7_8082/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms500m -Xmx800m -XX:PermSize=256M -XX:MaxPermSize=300M \ -Djava.endorsed.dirs=/home/hotspot/tomcat7_8082/endorsed -Dcatalina.base=/home/hotspot/tomcat7_8082 -Dcatalina.home=/home/hotspot/tomcat7_8082 -Djava.io.tmpdir=/home/hotspot/tomcat7_8082/temp
2.tomcat调优
[hotspot@bogon ~]$ jinfo -flags Attaching to process ID , please wait... Debugger attached successfully. Server compiler detected. JVM version is 23.5-b02 -Djava.util.logging.config. -XX:MaxGCPauseMillis= -XX:InitiatingHeapOccupancyPercent= -XX:SurvivorRatio= -XX:PermSize=250M -XX:MaxPermSize=400M \
-Djava.rmi.server. -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false \
-Djava.endorsed.dirs=/home/hotspot/tomcat7b/endorsed -Dcatalina.base=/home/hotspot/tomcat7b -Dcatalina.home=/home/hotspot/tomcat7b -Djava.io.tmpdir=/home/hotspot/tomcat7b/temp [hotspot@bogon ~]$ jstat -gcutil 5s S0 S1 E O P YGC YGCT FGC FGCT GCT 0.000 247.260
从jstat的结果看出,FGC没有发生过。
3.ecilpse调优
jdk 1.7.0_17 | win10 64bit | cpu 3.0 | ram 8g | hd 1t
-startup plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316 -product org.eclipse.epp.package.jee.product --launcher.defaultAction openFile -showsplash org.eclipse.platform --launcher.defaultAction openFile --launcher.appendVmargs -vmargs -Dosgi.requiredJavaVersion=1.6 #### 该行以下为调优参数 #### -XX:+UseParNewGC -XX:+UseConcMarkSweepGC
-XX:+DisableExplicitGC -Xmn550m -XX:SurvivorRatio=6 -Xms1024m -Xmx1024m -XX:MaxPermSize=400m -XX:PermSize=300M -XX:MaxTenuringThreshold=12 -Declipse.p2.max.threads=20
-XX:+DisableExplicitGC : 禁止在程序在使用System.gc() 这个方法会引发FullGC,为了让关闭后的窗体不再占用堆内存, eclipse程序中自动调用了System.gc()
-XX:MaxTenuringThreshold=12:让需要进入老年代的对象尽快进入
调优结果:startup:6s loadup:12s openPomXml:3s
JVM 调优总结的更多相关文章
- jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
文章同步发布于github博客地址,阅读效果更佳,欢迎品尝 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎 ...
- jvm系列(六):jvm调优-从eclipse开始
jvm调优-从eclipse开始 概述 什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配.回收的情况来调整各区域内存比例或者gc回收的策略:更深一层就是根据dump出来的内存结构和线程 ...
- JVM调优总结:调优方法
JVM调优总结:调优方法 2012-01-10 14:35 和你在一起 和你在一起的博客 字号:T | T 下面文章将讲解JVM的调优工具以及如何去调优等等问题,还有一些异常问题的处理.详细请看下文. ...
- [转]JVM调优总结:一些概念
JVM调优总结:一些概念 原文出处: pengjiaheng 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变 ...
- JVM调优-Java垃圾回收之分代回收
为什么要进行分代回收? JVM使用分代回收测试,是因为:不同的对象,生命周期是不一样的.因此不同生命周期的对象采用不同的收集方式. 可以提高垃圾回收的效率. Java程序运行过程中,会产生大量的对象, ...
- JVM调优浅谈
1.数据类型 java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值.“引用值”代表了某个对象的引用,而不是对象本 ...
- [转] JVM 调优系列 & 高并发Java系列
1.JVM调优总结(1):一些概念:http://www.importnew.com/18694.html 2.JVM调优总结(2):基本垃圾回收算法:http://www.importnew.com ...
- JVM调优总结(转)
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- JVM调优总结10-调优方法
JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...
- JVM调优总结 + jstat 分析(转)
[转] JVM调优总结 + jstat 分析 JVM调优总结 + jstat 分析 jstat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒 ...
随机推荐
- 第一篇:webservice初探
接触webservice也有一段时间了,为了查缺补漏,把知识点系统化,准备写几篇博文梳理下webservice的知识点,这是第一篇,对webservice进行大致的介绍. 1.什么是webservic ...
- 学习笔记TF026:多层感知机
隐含层,指除输入.输出层外,的中间层.输入.输出层对外可见.隐含层对外不可见.理论上,只要隐含层节点足够多,只有一个隐含层,神经网络可以拟合任意函数.隐含层越多,越容易拟合复杂函数.拟合复杂函数,所需 ...
- STF,docker学习资料整理
- Log4Net(一):快速入门
概览 Log4Net是Apache Log4J框架在.NET平台上的实现,它是一个帮助开发者将日志信息以多种方式(数据库.控制台.文件等)输出的开源工具. 为什么要使用日志记录 提供应用程序运行时状态 ...
- DL4NLP——词表示模型(二)基于神经网络的模型:NPLM;word2vec(CBOW/Skip-gram)
本文简述了以下内容: 神经概率语言模型NPLM,训练语言模型并同时得到词表示 word2vec:CBOW / Skip-gram,直接以得到词表示为目标的模型 (一)原始CBOW(Continuous ...
- jquery html5 file 上传图片显示图片
jquery js 的代码:不同浏览器下的路径 //建立一個可存取到該file的url function getObjectURL(file) { var url = null ; i ...
- 配置LAMP实现WordPress
环境说明: 在同一台主机上实现LAMP(Linux + Apache + MariaDB + PHP) CentOS 7.3.Apache 2.4.6.MariaDB 5.5.52.PHP 5.4.1 ...
- .editorconfig
摘要 是什么 EditorConfig是一套用于统一代码格式的解决方案,可以帮助开发者在不同的编辑器和IDE之间定义和维护一致的代码风格. EditorConfig包含一个用于定义代码格式的文件和一批 ...
- windows系统查看支持最大内存
1.使用快捷键:win+r打开命令窗口. 按回车到命令界面 2.弹出如下命令界面,在界面C:\Users\Administrator>处输入wmic memphysical get maxcap ...
- 基于Vivado调用ROM IP core设计DDS
DDS直接数字式频率合成器(Direct Digital Synthesizer) 下面是使用MATLAB生成正弦波.三角波.方波的代码,直接使用即可. t=:*pi/^:*pi y=0.5*sin ...