Ubuntu11.10下编译 OpenJDK7
http://blog.csdn.net/yhmhappy2006/article/details/7281710
基本垃圾收集算法
标记-清除(Mark-Sweep)
效率问题
内存碎片
适用于老年代
复制(Copying)
解决碎片问题
可用内存缩小(一半)
存活率高时,复制效率低
用于新生代
标记-整理(Mark-Compact)
适用于老年代
老年代存活率高,不适合复制算法
垃圾收集器
新生代垃圾收集器-基于复制
Serial
单线程(暂停用户线程)
复制
Client模式默认
ParNew
多线程并行(暂停用户线程)
复制
-XX:+UseParNewGC
默认开启CPU个数个线程(-XX:ParallelGCThreads)
Server模式下新生代首先(与CMS配合老年代)
Parallel Scavenge
多线程并行(暂停用户线程)
复制
“吞吐量优先”收集器,可精确控制吞吐量
吞吐量=用户代码时间/(用户代码时间+垃圾收集时间)
老年代垃圾收集器-基于标记-整理/清除
Serial Old
Serial的老年代版本
单线程(暂停用户线程)
标记-整理
主要在Client模式下使用
在Server下,作为CMS的后备,或与新生代PS收集器配合使用
Parallel Old
Parallel Scavenge老年代版
多线程并行(暂停用户线程)
标记-整理
From JDK1.6
CMS
适合互联网应用
并发
标记-清除(碎片!)
默认线程数:(CPU数量+3)/4
老年代使用了68%后触发(-XX:CMSInitiatingOccupancyFraction)
CMS步骤
初始标记
并发标记
重新标记
并发清除
其中两个“并发”步骤是不暂停用户线程的
内存分配回收策略
小对象在Eden区分配
大对象直接在老年代分配
(-XX:PretenureSizeThreshold)
长期存活的对象进入老年代
(-XX:MaxTenuringThreshold)
动态对象年龄判断
年龄为y的对象个数有n个,如果这n个对象的大小总和大于Survivor空间的一半,则年龄>=y的对象直接进入老年代,无需等到MaxTenuringThreshold
空间分配担保
相关工具
jmap
-heap
查看哪种收集器、分代情况(Linux)
-dump
生成堆快照
-dump:format=b,file=<filename>
-F
强制dump (Linux)
See
http://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html
jstat
-class
监视类装载、卸载数量等
GC
-gc
-gcutil
JIT
……
See
http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html
MAT
Java堆分析器,分析jmap –dump下来的数据,以图形界面形式展示分析结果
http://www.eclipse.org/mat/
分享到:
相关推荐
深入理解Java虚拟机学习笔记借鉴.pdf
自己看《深入理解Java虚拟机》(第二版)所做的一些笔记。因为个人水平有限,能够理解的也只有前面几章的内容,后面的内容觉得看了也不是很理解,就没有记在里面。希望能对大家有所帮助,也希望能和大家一起进步。
深入理解Java虚拟机笔记(带目录).docx
NULL 博文链接:https://zhanjia.iteye.com/blog/1842733
深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)
包括jvm 的内存模型 对象的创建过程 垃圾回收算法 垃圾回收器 内存分配和回收策略
1. JVM调优 1.1 JVM调优总结(一)-一些概念 1.2 JVM调优总结(二)-一些概念 1.3 JVM调优总结(三)-基本垃圾回收算法 1.4 JVM调优总结(四)-垃圾回收面临的问题 1.5 JVM调优总结(五)-分代垃圾...4.3 深入理解JVM
JVM深入理解Java虚拟机 - 学习笔记
java学习笔记3(java虚拟机)java学习笔记3(java虚拟机)
深入java虚拟机笔记http://blog.csdn.net/yangzl2008/article/details/8074667
该文档是本人的学习笔记,尚未精修,后续会精修排版. 学习笔记:深入浅出 Java 虚拟机.docx
本书十三个章节,分别讲解了android系统基础知识,android系统的结构和核心框架,Java虚拟机和Dalvik虚拟机的知识,实现程序编译和调试,Dalvik的运作流程,DEX优化和安全管理,Android虚拟机生命周期的管理和内存...
java虚拟机读书笔记,主要描述阅读Java虚拟机核心技术的描述。
它能干什么,文章从作者得角度带大家深入Java虚拟机相关内容,希望对大家有帮助。这里我们使用举例来说明为什么要学习Java虚拟机,其实这个问题就和为什么要学习数据结构和算法是一个道理,工欲善其事,必先利其器。...
深入Java虚拟机JVM类加载学习笔记:jvm java classloader 垃圾回收 gc
java虚拟机源码学习 Understanding the JVM 深入理解Java虚拟机第三版 (周志明)源码及学习笔记
Java 虚拟机学习笔记: Java 内存区域, 垃圾收集, 内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,...
NULL 博文链接:https://zhanjia.iteye.com/blog/1842242
虚拟机》阅读笔记 本 repo 为《深入理解 Java 虚拟机 第2版》的阅读笔记,并对全书内容按照自己的理解进行了一定程度的整理。《深入理解 Java 虚拟机 第2版》原书主要分为了五个部分,这里仅对前四个部分进行讲解,...
——————————————————————————————————————————————