一、目标
- java虚拟机概述和基本概念*
- 堆、栈、方法区*
- 了解虚拟机参数**
- 垃圾回收概念和算法、及对象的分代转换*
- 垃圾收集器**
- Tomcat性能影响实验**
- 性能监控工具**
二、概念
- 所谓虚拟机,是用来执行一系列虚拟计算机指令的机器或软件,大体上分为系统虚拟机和程序虚拟机。
- 系统虚拟机-VMware等。
程序虚拟机-jvm,在jvm中执行的指令叫做java字节码指令。 - 虚拟机上运行的程序都被限制于虚拟机提供的资源中。
- sun最初使用的虚拟机叫classic,现在广泛使用hotspot。除sun外,还有bea的jrockit,目前jrockit和hotspot都被oracle收购。
三、jvm组成部分
1. 类加载子系统:负责从文件系统或网络中加载Class信息,存放到方法区。
2. 方法区
存放类信息、常量、常量池、字符串字面量和数字常量。
3. 堆**
几乎所有对象实例都存放在这,堆空间是所有线程共享的。
4. 直接内存
java的NIO库允许java程序使用直接内存,从而提高性能,通常优于java堆。适用于读写频繁。
5. 栈
每个线程都有自己的私有栈,栈里保存着局部变量、方法参数、方法调用、返回值等。
6. 本地方法栈
jvm允许java直接调用本地方法(通常使用c编写)
7. 垃圾回收系统**
java核心,有一套自己进行垃圾清理的机制。
8. PC寄存器
每个线程私有,用于cpu调度。
9. 执行引擎
负责执行jvm字节码。