JVM性能调优
来源:互联网 发布:sdn会取代那些传统网络 编辑:程序博客网 时间:2024/06/06 05:33
JDK自带的jvm调优工具jvisuaLVM
Java VisualVM默认的插件中心网址已关闭服务,已经把服务迁移到github,可以进入这个网址https://visualvm.github.io/pluginscenters.html查询不同JDK版本对应的插件下载地址,再把java VisualVM插件中的设置里的插件中心地址改成对应的下载地址即可。
配置
eclipse配置文件eclipse.ini,添加
-Xms256m 最小堆内存
-Xmx1024m 最大堆内存
eclipse配置文件eclipse.ini,打印出gc日志
-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:F:\android\eclipse3.18\eclipse\gc\gc.log
重启eclispe在gc.log会打印出gc日志
我们拿上面一条GC出来分析,如
2017-07-19T21:40:40.432+0800: 18.498: [GC (GCLocker Initiated GC) [PSYoungGen: 123909K->23017K(125952K)] 170172K->74234K(427008K), 0.0516005 secs] [Times: user=0.09 sys=0.00, real=0.05 secs]
2017-07-19T21:40:40.432+0800: 时间戳
18.498: 启动到发生gc的时间
GC:GC类型,还有个full GC
PSYoungGen:年轻代 Prallell Scavenge(年轻代收集器、并行收集器,复制算法)
123909K->23017K(125952K):当前年轻代的大小->gc后年轻代的大小(年轻代总分配的空间)
170172K->74234K(427008K):堆内存->gc后堆内存
0.0516005 secs:gc发生时间
然后下面是Full GC的日志
2017-07-19T21:40:33.157+0800: 11.226: [Full GC (Metadata GC Threshold) [PSYoungGen: 10730K->0K(112128K)] [ParOldGen: 52811K->46254K(301056K)] 63541K->46254K(413184K), [Metaspace: 53972K->53972K(1099776K)], 0.3041220 secs] [Times: user=0.61 sys=0.00, real=0.30 secs]
里面包括年轻代、年老代和永久代的gc内存情况
从上面的gc可以看出,一次启动eclipse差不多GC或Full GC10次,其实我们可以做优化,年轻代一直gc的原因是分配的年轻代内存小,所以每次用完就gc,又申请内存,导致内存越来越多,所以如果分配内存多,会减少gc的次数,下面来配置年轻代和永久代(参数多次调才达到最优状态)
-Xms256m
-Xmx1024m
-XX:NewSize=400m
-XX:MaxNewSize=400m
-XX:PermSize=90m
-XX:MaxPermSize=90
gc次数有明显的减少,从10次下降到6次
垃圾收集器算法
1、标记清除算法
两个阶段 ,标记和清除
标记哪些是存活的,哪些是可回收的对象
2、复制算法
3、标记整理算法
4、分代收集算法
整合前面三种算法,
垃圾收集器(对算法的实现)
Serial:串行收集器、复制算法、新生代、默认、单线程、stop world、响应时间
ParNew:并行收集器、新生代、响应时间
Parallel sacvenge:并行收集器、新生代、复制算法、吞吐量
SerialOld:老年代、单线程
Parallel old:老年代、多线程
CMS concurrent Mark Sweep(并发标记整理 ):并发(跟并行有区别的)、老年代、多线程、最短时间、使用cpu多核、老年代用的最多
G1,标记整理算法、可以设计垃圾收集停顿时间、还没广泛使用
组合
CMS + Serial / ParNew
SerialOld + Serial / Parallel sacvenge /ParNew
Parallel old + Parallel sacvenge
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- jvm性能调优
- JVM性能调优
- jvm性能调优
- jvm性能调优
- JVM性能调优
- JVM 性能调优
- JVM性能调优
- JVM性能调优
- jvm性能调优
- Linux基金会执行总监:中国将成开源社区领导者
- python使用assert断言
- vs2013配置opencv3.0.0
- 链表 是否带环,环的长度以及入口点
- 清除重复的点Point
- JVM性能调优
- Deep Learning(深度学习)学习笔记整理系列之(三)
- 小白带你学安卓——Activity的启动模式
- PM 前进之路——Axure入门学习
- UVA1572Self-Assembly
- 轨迹球鼠标升级!
- js如何查找上级作用域
- SOCKET编程(C语言实现)
- IOC细解+示例