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虚拟机——JVM高级特性与最佳实践(第2版)》这本书籍还深入探讨了JVM的性能调优、并发编程、以及各种高级特性的具体应用。比如,对于性能调优,书中讲解了如何根据不同的...
### 深入理解Java虚拟机(JVM)的关键知识点 #### 一、Java与Java虚拟机的关系 Java语言的设计者们为了使Java程序能够跨平台运行,引入了一个概念——Java虚拟机(JVM)。简单来说,Java源代码在编译成`.class`...
Java以其“一次编写,到处运行”的特性赢得了全球程序员的喜爱,它的跨平台能力得益于Java虚拟机(JVM)。 接着,笔记会深入讲解Java的语法基础,如变量、数据类型、运算符、流程控制语句(如if、for、while)以及...
本资源是关于OpenJDK7源码的分析和学习资料,旨在帮助开发者深入理解Java虚拟机的工作原理。 首先,我们来了解一下Java虚拟机的主要组件和功能: 1. **类加载器**:负责加载Java字节码文件(.class),将其转换为...
11. **JVM内存管理**:了解Java虚拟机(JVM)的工作原理,包括堆内存、栈内存、方法区等,以及垃圾回收机制,对于优化程序性能至关重要。 12. **设计模式**:设计模式是解决常见软件设计问题的经验总结,如单例模式...
1. 类加载:当Java虚拟机(JVM)加载一个类时,它会创建该类的Class对象。这个对象包含了关于类的所有信息,包括方法、字段、构造器等。例如,`Class<?> clazz = Class.forName("com.example.MyClass");` 2. 获取...
- **JVM**(Java Virtual Machine):Java 虚拟机,负责执行 Java 字节码。 - **JRE**(Java Runtime Environment):Java 运行环境,包含了 JVM 和 Java 核心类库(Java API),是运行 Java 程序所必需的环境。 - *...
Java虚拟机(JVM)是Java程序运行的核心,它是一个抽象的计算机系统,负责执行Java字节码。在深入理解JVM之前,我们先要明白什么是字节码:Java源代码经过编译后生成的中间表示,即.class文件,里面包含的就是字节码...
这份"Java JDK 6学习笔记——ppt简体版"提供了关于这个关键版本的详细教程,适合初学者和有一定经验的开发者来深入理解Java编程。 首先,我们要了解Java JDK是什么。Java Development Kit,简称JDK,是Oracle公司...
首先,Java JDK(Java Development Kit)是开发和运行Java应用程序的基础,其中包含了Java编译器、Java虚拟机(JVM)、调试工具以及其他必要的开发工具。在Java 6版本中,这个版本引入了许多新特性和改进,如更高效...
虽然Java的底层实现部分是基于C++,但Java并不是基于C语言,它有自己的虚拟机——Java虚拟机(JVM)。 面向对象是Java的核心概念,这意味着代码被组织成类和对象,更好地模拟现实世界中的实体和行为。Java的可移植...
- **跨平台性**:Java 的源代码会被编译成一种中间格式——字节码,这种字节码可以在安装了 Java 虚拟机 (JVM) 的任何平台上运行,从而实现了“一次编写,到处运行”的理念。 - **多线程**:Java 支持多线程编程,...
11. **JVM(Java虚拟机)**:理解JVM的工作原理,包括类加载、内存管理(堆、栈、方法区等)、垃圾回收等,有助于优化程序性能。 12. **设计模式**:设计模式是解决软件设计中常见问题的模板,如单例模式、工厂模式...
它以其“一次编写,到处运行”的特性而闻名,因为Java代码可以跨平台运行,只需一个Java虚拟机(JVM)支持。本节的听课笔记将深入探讨Java的核心概念和技术。 一、Java语言基础 1. 变量与数据类型:Java提供了基本...
Java是一种跨平台的编程语言,它的跨平台特性得益于Java虚拟机(JVM)。Java应用程序在JVM上运行,JVM将Java字节码转换为特定平台的机器指令。Java程序的开发流程包括: - 编写.java源代码文件。 - 使用javac.exe...