垃圾回收机制笔记
垃圾回收机制理解:每一块内存都被监控着,每一次扫描都会开辟另一块空间,把当前空间中活跃的对象,复制到新空间中,依次紧挨着重新排列,复制完之后,会把当前空间中就只剩下无用对象了,然后这些空间都可以重新分配对象。
大致分两大类:引用计数和自适应。
引用计数是指一块内存被引用依次就计数加1,如果减少一个引用就计数减1,当对象计数为0,那就会被清理。当内存比较少的时候,就会使用 停止-复制(stop-and-copy)方式清理,就是停止运行JVM虚拟机,再对所有内存进行清理,不是在后台执行的。如果内存剩余大,就会使用 标记-清理(mark-and-sweep),就是把活跃的对象标记一下。工作完之后,就把有标记的对象全部紧挨的放到另一块内存,当前空间的多有内存就可以继续使用,这是在后台执行的。
扩展:JVM虚拟机为了提升速度,尤其是和加载器操作有关的。就会运用JIT(just-in-time)技术,这技术会把程序的全部或者部分编译成本地机器码,当JVM虚拟机需要装载类时,就会找到机器码装入内存,就减少了JVM编译的工作量,也提升了速度。
惰性评估:JIT只在必要的时候编译代码,有些不会运行的代码是不会被编译的。