SlideShare a Scribd company logo
JVM基础调优实践
@巨元
2011.12
OUTLINE
JVM内存结构
JVM垃圾收集器
JVM内存调优参数
GC演示实例
JVM运行期分析工具
OOM事后分析工具
OOM演示实例
2015/12/15 2
JVM内存结构
2015/12/15 3
JVM 包含两个子系统和两个组件
两个子系统分别是ClassLoader和ExecutionEngine
两个组件则是Runtime Data Area和Native Interface,其中
Runtime Data Area中就包含了我们常说的JVM内存。
JVM内存结构
• 一张完整JVM图(包括了GC)
2015/12/15 4
JVM内存结构
• Method Area——方法区,被Class Loader所装载的class文件以及
相关的方法信息、域信息、静态变量等都存放在这个区域内。该区域
是所有Java线程所共享的。
(设置方法区内存大小:-XX:PermSize –XX:MaxPermSize)
• Heap——堆区,这个区域就是用来存放java对象的,通常GC也是针
对该区域。一个Java虚拟机实例只有一个堆,并直接由java虚拟机进
行管理,在虚拟机启动时创建。该区域可以被所有Java线程所共享。
(设置堆内存大小:-Xms –Xmx -Xmn)
• Stack——栈区,用来存放JVM的内存局部变量和操作数栈。通常虚
拟机对它的操作比较简单(以帧为单位的压栈和出栈),速度也很快。
每个线程都有自己的栈,且栈可以不连续。
(设置栈内存大小:-Xss)
• Program Counter Register——每一个线程都有自己的一个PC寄存
器,用于存放下一条被执行的指令的地址。每个线程的PC寄存器在线
程启动时产生。
• Native Method Stack——保存本地方法进入区域的地址。
(设置栈内存大小:-Xss)
2015/12/15 5
JVM内存结构
2015/12/15 6
JVM堆内存结构
垃圾收集器
• 垃圾收集器算法
• 标记-清楚算法
• 复制算法
• 标记-整理算法
• 分代收集算法
2015/12/15 7
垃圾收集器
• 标记 -清除算法(Mark-Sweep)
• 此算法执行分两阶段:
• 第一阶段从引用根节点开始标记所有被引用的对象。
• 第二阶段遍历整个堆,把未标记的对象清除。
• 此算法需要暂停整个应用,同时,会产生内存碎片。
2015/12/15 8
垃圾收集器
• 复制算法(Copying)
• 此算法把内存空间划为两个相等的区域,每次只使用其中一个区域。
垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一
个区域中。此算法每次只处理正在使用中的对象,因此复制成本比较
小,同时复制过去以后还能进行相应的内存整理,不会出现“碎片”
问题。
• 此算法的缺点也是很明显的,就是需要两倍内存空间。
2015/12/15 9
垃圾收集器
• 标记-整理算法(Mark-Compact)
• 此算法结合了“标记-清除”和“复制”两个算法的优点。也是分两
阶段,第一阶段从根节点开始标记所有被引用对象,第二阶段遍历整
个堆,把清除未标记对象并且把存活对象“压缩”到堆的其中一块,
按顺序排放。此算法避免了“标记-清除”的碎片问题,同时也避免
了“复制”算法的空间问题。
2015/12/15 10
垃圾收集器
• 分代收集算法(Generational Collecting)
• 基于对对象生命周期分析后得出的垃圾回收算法。把对象分为年青代、
年老代、持久代,对不同生命周期的对象使用不同的算法(上述方式
中的一个)进行回收。现在的垃圾回收器(从J2SE1.2开始)都是使
用此算法的。
2015/12/15 11
垃圾收集器
• JVM垃圾收集器类型
• Serial收集器
• ParNew收集器
• Parallel Scavenge收集器
• Serial Old收集器
• Parallel Old收集器
• CMS收集器
• G1收集器
2015/12/15 12
垃圾收集器
• Serial收集器
• 用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比
较高。但是,也无法使用多处理器的优势,所以此收集器适合单处理
器机器。当然,此收集器也可以用在小数据量(100M左右)情况下
的多处理器机器上。可以使用-XX:+UseSerialGC打开。
2015/12/15 13
垃圾收集器
• ParNew收集器
• 对年轻代进行并行垃圾回收,因此可以减少垃圾回收时间。一般在多
线程多处理器机器上使用。使用-XX:+UseParallelGC.打开。并行收
集器在J2SE5.0第六6更新上引入,在Java SE6.0中进行了增强--可以
对年老代进行并行收集。如果年老代不使用并发收集的话,默认是使
用单线程进行垃圾回收,因此会制约扩展能力。使用-
XX:+UseParallelOldGC打开。
• 使用-XX:ParallelGCThreads=<N>设置并行垃圾回收的线程数。此
值可以设置与机器处理器数量相等。
2015/12/15 14
垃圾收集器
• Serial Old收集器
2015/12/15 15
垃圾收集器
• Parallel Old收集器
2015/12/15 16
垃圾收集器
• CMS收集器
• 可以保证大部分工作都并发进行(应用不停止),垃圾回收只暂停很
少的时间,此收集器适合对响应时间要求比较高的中、大规模应用。
使用-XX:+UseConcMarkSweepGC打开。
2015/12/15 17
垃圾收集器
2015/12/15 18
各种垃圾收集器在年轻代和老年代配对使用方法
垃圾收集器
2015/12/15 19
垃圾收集器
• 何时触发垃圾回收?
• 由于对象进行了分代处理,因此垃圾回收区域、时间也不一样。GC
有两种类型:Scavenge GC和Full GC。
• Scavenge GC
• 一般情况下,当新对象生成,并且在Eden申请空间失败时,就
会触发Scavenge GC,对Eden区域进行GC,清除非存活对象,并且
把尚且存活的对象移动到Survivor区。然后整理Survivor的两个区。
这种方式的GC是对年轻代的Eden区进行,不会影响到年老代。因为
大部分对象都是从Eden区开始的,同时Eden区不会分配的很大,所
以Eden区的GC会频繁进行。因而,一般在这里需要使用速度快、效
率高的算法,使Eden去能尽快空闲出来。
2015/12/15 20
垃圾收集器
• Full GC
• 对整个堆进行整理,包括Young、Tenured和Perm。Full GC因
为需要对整个堆进行回收,所以比Scavenge GC要慢,因此应该尽可
能减少Full GC的次数。在对JVM调优的过程中,很大一部分工作就
是对于FullGC的调节。有如下原因可能导致Full GC:
• 年老代(Tenured)被写满
• 持久代(Perm)被写满
• System.gc()被显示调用
• 上一次GC之后Heap的各域分配策略动态变化
2015/12/15 21
JVM内存调优参数
• jvm调优指令格式
• -XX:+<option> 开启option参数
• ex: java -XX:+DisableExplicitGC
• -XX:-<option> 关闭option参数
• ex: : java -XX:-DisableExplicitGC
• -XX:<option>=<value> 将option参数的值设置为value
• ex:java -XX:PermSize=96m -XX:MaxPermSize=256m
2015/12/15 22
JVM内存调优参数
• jvm调优指令分类
• 内存管理参数
• -Xms4g (设置Java heap(堆)的初始化大小)
• -Xmx4g (设置Java heap 的最大值)
• -XX:NewSize (年轻代初始值大小 )
• -XX:MaxNewSize(年轻代最大内存大小)
• -Xmn1024m (设置年轻代大小)
• -XX:PermSize=128m (设置持久代大小)
• -Xss512k(设置栈大小)
• 多线程相关参数
• -XX:+UseFastAccessorMethods
• 调试参数
• -XX:+HeapDumpOnOutOfMemoryError
• -XX:HeapDumpPath=/home/admin/logs
• 类型加载参数
• -XX:+UseSplitVerifier
• 性能参数
• -XX:+StringCache
2015/12/15 23
JVM内存调优参数
• 内存调优参数
• -Xms
• -Xmx
• -Xmn
• -Xss
toptrace JVM配置
2015/12/15 24
userportal JVM配置
GC收集实例
• GC日志格式说明:
[GC [<collector>: <starting occupancy1> -> <ending occupancy1>, <pause time1> secs] <starting
occupancy3> -> <ending occupancy3>, <pause time3> secs]
<collector>GC收集器的名称
<starting occupancy1> 新生代在GC前占用的内存
<ending occupancy1> 新生代在GC后占用的内存
<pause time1> 新生代局部收集时jvm暂停处理的时间
<starting occupancy3> JVM Heap 在GC前占用的内存
<ending occupancy3> JVM Heap 在GC后占用的内存
<pause time3> GC过程中jvm暂停处理的总时间
• YoungGenGC
YoungGenGC.java
-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
YGC收集信息
2011-12-20T19:24:29.040+0800: 10429.503: [GC [PSYoungGen: 484520K->2577K(495936K)] 734774K-
>254308K(3129664K), 0.0118730 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]
• FullGC
FullGC.java
-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
FGC收集信息
2011-12-20T19:38:37.391+0800: 10804.897: [Full GC (System) [PSYoungGen: 684K->0K(468416K)]
[PSOldGen: 342164K->257451K(1060864K)] 342849K->257451K(1529280K) [PSPermGen:
123775K->122206K(237248K)], 1.1808050 secs] [Times: user=0.99 sys=0.18, real=1.18 secs]
2015/12/15 25
JVM运行期分析工具
• jps 虚拟机进程状况工具
• jinfo java配置信息工具
• jstat 虚拟机统计信息监视工具
• jmap java内存映射工具
• jhat 虚拟机堆转储快照分析工具
• jstack java堆栈跟踪工具
2015/12/15 26
JVM运行期分析工具
• jps 虚拟机进程状况工具
• usage: jps [-help]
• jps [-q] [-mlv] [<hostid>]
参数描述:
-m 输出主类main函数的参数
-l 输出主类全名
-q 输出进程编号,省略主类名称
-v 输出虚拟机进程启动时JVM参数等同于 ps aux | grep java
ex:
jps –mlv <pid>
2015/12/15 27
JVM运行期分析工具
• jinfo java配置信息工具
• 命令格式:
• jinfo [option] <pid>
• <option> is one of:
• -flag <name> to print the value of the named VM flag
• -flag [+|-]<name> to enable or disable the named VM flag
• -flag <name>=<value> to set the named VM flag to the given value
• -flags to print VM flags
• -sysprops to print Java system properties
• <no option> to print both of the above
• -h | -help to print this help message
• ex:
• jinfo -flag PermSize <pid>
• 特殊用法:查看所有VM初始化参数
• java –XX:+PrintFlagsFinal <pid>
2015/12/15 28
JVM运行期分析工具
• jstat 虚拟机统计信息监视工具
• jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
• ex:
• jstat –gcutil <pid> 1000 10
• jstat –gcnew <pid> 1000 10
• jstat –gcold <pid> 1000 10
2015/12/15 29
JVM运行期分析工具
• jmap java内存映射工具
• ex:
• jmap -dump:live,format=b,file=heap.bin <pid>
• OOM的时候JVM启动参数配置
• 两种用法
• 1.-XX:+HeapDumpOnOutOfMemoryError
• 2.-XX: +HeapDumpOnCtrlBreak
• kill -3 pid
2015/12/15 30
JVM运行期分析工具
• jhat 虚拟机堆转储快照分析工具
• jhat heap.bin
• 访问:http://ip:7000
2015/12/15 31
JVM运行期分析工具
• jstack java堆栈跟踪工具
• jstack [option] <pid>
• [option]: -l 显示栈的信息,包括锁的信息
• -m 显示栈的信息,包括本地方法调用信息
• -f 强制输出线程堆栈
• ex: jstack –l <pid>
2015/12/15 32
OOM事后分析工具
• Memory Analyzer (MAT)
• Homepage:http://eclipse.org/mat/
• 看MAT的help是最好的老师,只要你有耐心和兴趣,肯定有收获
2015/12/15 33
OOM演示实例
• 1.java 堆溢出
• HeapOOM.java
• java -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
• 2.java虚拟机栈溢出
• JavaVMStackSOF.java
• java -Xss128k
• 3.java本地方法栈溢出
• JavaVMStackOOM.java
• java -Xss2M
• 4.java方法区溢出
• JavaMethodAreaOOM.java
• java -XX:PermSize=10M -XX:MaxPermSize=10M
• 5.本机直接内存溢出(比较难分析)
• DirectMemoryOOM .java
• java -Xmx20M -XX:MaxDirectMemorySize=10M
2015/12/15 34
总结
• 掌握基本的JVM知识
• 1.JVM内存结构
• 2.JVM内存参数
• 3.JVM调优指令格式
• 4.垃圾收集器(YGC,FGC触发时机都是不一样)
• JVM分析工具
• jps,jstat,jinfo,jmap,jhat,jstack
• 分析问题->解决问题->总结->分享->经验
• 参考资料:
• http://www.oracle.com/technetwork/java/javase/tech/vmoptio
ns-jsp-140102.html (VM参数选项说明)
• http://www.oracle.com/technetwork/java/gc-tuning-5-
138395.html (JVM调优指南)
2015/12/15 35
外延话题
• 1.操作系统优化(linux etc)
• 2.WEB服务器优化(Apache,Jetty, Nginx)
• 3.应用服务器优化(Jboss,Tomcat,Jetty)
• 4.DBMS的优化(MySql,Oracle,SQL Server)
• 5.应用的优化(设计优化,代码优化)
• 总之一句话:优化无极限,细节是魔鬼
2015/12/15 36

More Related Content

What's hot

Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄锐 张
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流
简放 视野
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查
bluedavy lin
 
并发编程交流
并发编程交流并发编程交流
并发编程交流
bluedavy lin
 
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇bluedavy lin
 
高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查
bluedavy lin
 
Jvm memory
Jvm memoryJvm memory
Jvm memorybenewu
 
HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙
bluedavy lin
 
MySQL查询优化浅析
MySQL查询优化浅析MySQL查询优化浅析
MySQL查询优化浅析
frogd
 
Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析
frogd
 
Sun jdk 1.6 gc
Sun jdk 1.6 gcSun jdk 1.6 gc
Sun jdk 1.6 gc
bluedavy lin
 
Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)
wang hongjiang
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
frogd
 
Btrace intro(撒迦)
Btrace intro(撒迦)Btrace intro(撒迦)
Btrace intro(撒迦)ykdsg
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)FLASH开发者交流会
 
系统性能分析和优化.ppt
系统性能分析和优化.ppt系统性能分析和优化.ppt
系统性能分析和优化.pptFrank Cai
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化丁 宇
 
排队论及其应用浅析
排队论及其应用浅析排队论及其应用浅析
排队论及其应用浅析
frogd
 
服务器端性能优化
服务器端性能优化服务器端性能优化
服务器端性能优化cenwenchu
 

What's hot (20)

Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄Sun jdk 1.6内存管理 -使用篇-毕玄
Sun jdk 1.6内存管理 -使用篇-毕玄
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查
 
并发编程交流
并发编程交流并发编程交流
并发编程交流
 
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇
 
高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查
 
Jvm memory
Jvm memoryJvm memory
Jvm memory
 
HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙
 
MySQL查询优化浅析
MySQL查询优化浅析MySQL查询优化浅析
MySQL查询优化浅析
 
Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析
 
Sun jdk 1.6 gc
Sun jdk 1.6 gcSun jdk 1.6 gc
Sun jdk 1.6 gc
 
Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
 
Btrace intro(撒迦)
Btrace intro(撒迦)Btrace intro(撒迦)
Btrace intro(撒迦)
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
 
系统性能分析和优化.ppt
系统性能分析和优化.ppt系统性能分析和优化.ppt
系统性能分析和优化.ppt
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
排队论及其应用浅析
排队论及其应用浅析排队论及其应用浅析
排队论及其应用浅析
 
服务器端性能优化
服务器端性能优化服务器端性能优化
服务器端性能优化
 
Jvm内存管理基础
Jvm内存管理基础Jvm内存管理基础
Jvm内存管理基础
 

Similar to Jvm基础调优实践(v1.0)

JVM 初探
JVM 初探JVM 初探
JVM 初探
zyh
 
Jvm状态监控与oom案例分析
Jvm状态监控与oom案例分析Jvm状态监控与oom案例分析
Jvm状态监控与oom案例分析beiyu95
 
Java trouble shooting
Java trouble shootingJava trouble shooting
Java trouble shootingMin Zhou
 
05.wls调优
05.wls调优05.wls调优
05.wls调优
Meng He
 
纵览Loadrunner核心功能
纵览Loadrunner核心功能纵览Loadrunner核心功能
纵览Loadrunner核心功能
beiyu95
 
Jmm与map reduce简介
Jmm与map reduce简介Jmm与map reduce简介
Jmm与map reduce简介
huozhanfeng
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划mysqlops
 
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划colderboy17
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kaoxwcoder
 
04.web sphere培训 应用websphere优化
04.web sphere培训 应用websphere优化04.web sphere培训 应用websphere优化
04.web sphere培训 应用websphere优化
littlecong
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超drewz lin
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
Jinrong Ye
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统
klandor
 
Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训
Cody Zhang
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)
Brad Chao
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計
Brad Chao
 
Jvm那些事
Jvm那些事Jvm那些事
Jvm那些事
dynamiclu
 
Spark tutorial
Spark tutorialSpark tutorial
Spark tutorial
Lin JiaMing
 
为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)
Kris Mok
 

Similar to Jvm基础调优实践(v1.0) (20)

JVM 初探
JVM 初探JVM 初探
JVM 初探
 
Jvm状态监控与oom案例分析
Jvm状态监控与oom案例分析Jvm状态监控与oom案例分析
Jvm状态监控与oom案例分析
 
Java trouble shooting
Java trouble shootingJava trouble shooting
Java trouble shooting
 
05.wls调优
05.wls调优05.wls调优
05.wls调优
 
纵览Loadrunner核心功能
纵览Loadrunner核心功能纵览Loadrunner核心功能
纵览Loadrunner核心功能
 
Jmm与map reduce简介
Jmm与map reduce简介Jmm与map reduce简介
Jmm与map reduce简介
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划
 
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
 
04.web sphere培训 应用websphere优化
04.web sphere培训 应用websphere优化04.web sphere培训 应用websphere优化
04.web sphere培训 应用websphere优化
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统
 
Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計
 
Jvm那些事
Jvm那些事Jvm那些事
Jvm那些事
 
Spark tutorial
Spark tutorialSpark tutorial
Spark tutorial
 
为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)为啥别读HotSpot VM的源码(2012-03-03)
为啥别读HotSpot VM的源码(2012-03-03)
 

Jvm基础调优实践(v1.0)

Editor's Notes

  1. -XX:+CMSParallelRemarkEnabled  降低标记停顿 -XX+UseCMSCompactAtFullCollection  在FULL GC的时候, 压缩内存, CMS是不会移动内存的, 因此, 这个非常容易产生碎片, 导致内存不够用, 因此, 内存的压缩这个时候就会被启用。 增加这个参数是个好习惯。