sun培训笔记--java内存管理,GC调优
来源:互联网 发布:手机淘宝2017旧版本 编辑:程序博客网 时间:2024/05/16 05:06
一: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.
- sun培训笔记--java内存管理,GC调优
- sun培训笔记--Solaris管理,性能问题
- java内存管理以及GC
- JAVA 内存管理及GC
- java内存管理,GC,内存泄漏
- Java内存模型及GC原理java内存模型 Java内存模型及GC原理 Java内存模型及GC原理 sun官方网站:sun java 虚拟机模型 Java内存模型及GC原理 JVM内存模型中分两
- java内存管理以及GC工作原理
- Java 垃圾回收机制 [ 内存管理 GC]
- Java的GC与内存管理
- JAVA内存管理和GC机制
- JAVA内存管理与GC机制
- Sun JDK内存管理
- 内存管理之GC
- [Java性能剖析]Sun JVM内存管理和垃圾回收
- Java性能剖析]Sun JVM内存管理和垃圾回收
- [Java性能剖析]Sun JVM内存管理和垃圾回收
- [Java性能剖析]Sun JVM内存管理和垃圾回收
- 内存管理(2)(某培训机构视频笔记)
- 世界杀软“金奖”得主BitDefender 2008(官方中文版 + 注册机下载)
- 从“衣食住行”看着奔向09年的经济寒冬
- 唇音同步
- Java程序如何生成mdb文件[MS Access]?
- sun培训笔记--Solaris管理,性能问题
- sun培训笔记--java内存管理,GC调优
- [转]POJ强烈推荐50题
- 数据结构 链表的lua实现 仿照C++中list 实现
- 请享受无法回避的痛苦
- [VB.NET]在赋值语句中怎样强制转换对象类型
- VCL已死,RAD已死(5)
- MTL--c++科学计算库--介绍
- [VB.NET]vb.net winform 窗体,怎么去掉窗体上方的工具栏呢?
- [VB.NET]使用PopupControlExtender 弹出窗口返回Web Service call failed: 500.