JDK
- java语言开发工具
- 提供了java编译器,java运行环境,java类库
JRE
- java运行环境,是包含在jdk中的
JVM
- java虚拟机,运行java程序的
JVM内存查看工具
-
jps:查看本机java进程信息
-
jstack:打印线程的栈信息,制作 线程dump文件
-
jmap:打印内存映射信息,制作 堆dump文件
-
jstat:性能监控工具
-
jhat:内存分析工具,用于解析堆dump文件并以适合人阅读的方式展示出来
-
jconsole:简易的JVM可视化工具
-
jvisualvm:功能更强大的JVM可视化工具
JVM内存分区
- 方法区:常量池,static资源,class对象只有一个
- 栈: 调用的方法 私有
- 本地方法栈:native 私有
- 程序计数器:记住代码执行的行数 私有
- 堆
- 所有通过new 创建的对象都存放在堆中
- 分区: 新生代,老年代 1:3
- 新生代: 8:1:1
- 伊甸园:新创建的对象
- from:经过垃圾回收(MinorGC),回收伊甸园区后,将伊甸园剩下的移入
- to: 经过垃圾回收,回收from区,将from剩下的移入
- 老年代:
- 垃圾回收,将to中移入老年代
- 如果老年代也满了,就进行一次全GC(FullGC)
- 元数据区: 存放jdk自带的元数据,存储了必须的类信息,不会回收
垃圾回收算法
-
标记清除(老年代)
-
复制(新生代垃圾回收)
-
标记整理(老年代)