垃圾回收
程序计数器、虚拟机栈、本地方法栈三个区域都是随线程而生,随线程而灭,因此这几个区域的内存分配和回收都是跟随线程的生命周期的,不需要过多的考虑,垃圾回收主要是回收堆空间和方法区的内存
垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾
GC主要作用于堆和方法区,其中大多数是在堆中进行
如何判断一个对象是否应该被回收(垃圾标记算法)
既然要进行回收,那么就需要判断一个对象是否是垃圾,是否应该被回收,判断对象是否存活一般有两种方式:引用计数法和可达性分析
1 | #javap的语法 |
1 | #javap 的命令选项 |