JVM
JVM组成
JVM由类加载子系统,运行时数据区,执行引擎以及本地方法接口组成。
JVM运行原理
java源文件经编译器,编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。
Java垃圾回收区域
- Java垃圾回收只针对堆和方法区的内存
- 程序计数器,虚拟机栈,本地方法栈的内存随线程产生,随线程而灭
如何确定垃圾
- 引用计数法
统计有多少人引用了,如果0人引用,则判断为垃圾。
缺点:引用很多时,消耗太大;A引用B,B引用A,其实A,B都是垃圾,但是他们引用永远都是1,不会被回收掉,陷入死循环。
- 可达性分析法
从垃圾回收的根出发判断是否可见
什么是垃圾回收的根
- 就是JVM认为一定有用的
- JVM栈中引用的对象(局部变量)。JVM认为垃圾回收时,暂停的那一刻,所有的局部变量都是有用的。
- 方法区中的静态变量,常量引用的对象
- 本地方法栈中Native方法引用的对象&#x