sun培训笔记--java内存管理,GC调优
2008-12-25 21:43
267 查看
一:java 性能优化,GC
java 5之后的所有JVM,Heap堆的分配:分为两部分,一部分是需要GC的堆空间,它们是Eden,Tune,另外一部分是永久存在的对象(Object,Class),JVM永远不会对其进行GC。
对于需要GC的堆空间,jvm每次先对Eden进行GC,对于GC后仍然存活的对性,将其移动到Tune区域。
而且Tune空间也是对半分为两部分,用于加速相互Copy compact的压缩算法。
经验值:
1 MaxHeapSize = MinHeapSize
2 对于需要GC的Heap,Eden:Tune 一般值为:1:3. ex.-XX:newRatio=1:3
3 java中的内存泄露? 是指那些在运行时不需要,但是仍然被活动对象所引用到的对象。 何谓jvm中的活动对象?它们有三类:Local Var,Static Var ,
GC的分类:
1 串行GC VS 并行GC
2 并发GC VS stop the world
3 Compact VS no Compact VS Copying
4 并发GC时,GC Thread占用一个CPu,建议4CPU的机器可以采用并发GC。否则很容易导致性能问题,因为GC会占用一个完整的CPU,抢占其它引用的cpu资源。
5 Incremental GC ,它的工作目标是 :减少引用中断的时间,将锁定Heap的时间分成若干次来降低Stop the world的时间。但是实际上多次中断的时间之和要比其它模式要长。 对于实时性要求高的引用建议采用此模式。
6 如果CPU多,可以适当增加Eden Heap的空间分配。可以提升性能。
性能调优,监控
1 NetBeans Profile 可以很容易监控到JVM的内存问题。而且免费在NetBeans中提供。
2 默认Java 1.5提供了JConsole能够连接到本地和远程JVM,观察memory,ClassLoader,Threads。采用JMX 方式连接。
3 在使用NetBeans Profile观察内存泄露问题时,观察每个Class的实例的Generation number,这个就是这个Class的所有实例的年龄枚举个数,如果有增无减,则很可能是内存泄露。
4 NetBeans中观察Class的实例,能够跟踪到该内存是code那里分配的。方便定位内存问题。
5 JPS 对应Linux系统中的ps命令。 ex. jps -l -o -v
6 Jstat -gcdetail without jmx.
java 5之后的所有JVM,Heap堆的分配:分为两部分,一部分是需要GC的堆空间,它们是Eden,Tune,另外一部分是永久存在的对象(Object,Class),JVM永远不会对其进行GC。
对于需要GC的堆空间,jvm每次先对Eden进行GC,对于GC后仍然存活的对性,将其移动到Tune区域。
而且Tune空间也是对半分为两部分,用于加速相互Copy compact的压缩算法。
经验值:
1 MaxHeapSize = MinHeapSize
2 对于需要GC的Heap,Eden:Tune 一般值为:1:3. ex.-XX:newRatio=1:3
3 java中的内存泄露? 是指那些在运行时不需要,但是仍然被活动对象所引用到的对象。 何谓jvm中的活动对象?它们有三类:Local Var,Static Var ,
GC的分类:
1 串行GC VS 并行GC
2 并发GC VS stop the world
3 Compact VS no Compact VS Copying
4 并发GC时,GC Thread占用一个CPu,建议4CPU的机器可以采用并发GC。否则很容易导致性能问题,因为GC会占用一个完整的CPU,抢占其它引用的cpu资源。
5 Incremental GC ,它的工作目标是 :减少引用中断的时间,将锁定Heap的时间分成若干次来降低Stop the world的时间。但是实际上多次中断的时间之和要比其它模式要长。 对于实时性要求高的引用建议采用此模式。
6 如果CPU多,可以适当增加Eden Heap的空间分配。可以提升性能。
性能调优,监控
1 NetBeans Profile 可以很容易监控到JVM的内存问题。而且免费在NetBeans中提供。
2 默认Java 1.5提供了JConsole能够连接到本地和远程JVM,观察memory,ClassLoader,Threads。采用JMX 方式连接。
3 在使用NetBeans Profile观察内存泄露问题时,观察每个Class的实例的Generation number,这个就是这个Class的所有实例的年龄枚举个数,如果有增无减,则很可能是内存泄露。
4 NetBeans中观察Class的实例,能够跟踪到该内存是code那里分配的。方便定位内存问题。
5 JPS 对应Linux系统中的ps命令。 ex. jps -l -o -v
6 Jstat -gcdetail without jmx.
相关文章推荐
- JVM学习笔记(1、 基本结构;2、Java代码编译和执行的整个过程3、内存管理和垃圾回收 4、 内存调优 )
- 【java】jvm调优笔记(二)—— GC策略&内存申请、对象衰老
- Java系列笔记(4) - JVM监控与调优
- 介绍Java GC种类,并更换 调优GC
- JAVA应用JVM原理及参数调优笔记
- Java系列笔记(4) - JVM监控与调优
- 嵌入式软件开发培训笔记——Java第三天(方法重载、对象的构造与初始化过程分析、封装等)
- Java学习笔记(二)——流程,内存管理
- Java培训笔记二十(学习流程)
- JAVA学习笔记--GC日志解析
- Java初级培训笔记------反射
- 如鹏网JAVA培训笔记1(晓伟整理)
- Java系列笔记 - Java 内存区域和GC机制
- 浪潮优派培训java笔记:第7章 String
- Sun授权ASEC-Java培训中心
- Sun为国电信息中心员工培训Java技术
- java培训学习笔记一
- 《JAVA 程序性能优化》笔记:性能调优工具之Java VisualVM配置
- Java性能调优笔记
- java内存管理以及GC