自学内容网 自学内容网

Java垃圾回收

垃圾回收回收的触发条件--空间不够了。

垃圾回收的安全点:

        用户线程暂停,GC线程要开始工作,但是要确保用户线程暂停的这行字节码指令是不会导致引用关系的变化。所以JVM会在字节码指令中,选一引起指令,作为“安全点”,比如方法调用、循环跳转、异常跳转等,一般是这些指令才会产生安全点。为什么它叫安全点,是因为GC时要暂停业务线程,并不是抢占式中断(立马把业务线程中断),而是主动式中断。主动式中断是设置一个标志,这个标志是中断标志,各业务线程在运行过程中会不停地主动去轮询这个标志,一旦发现中断标志为True,就会在自己最近的安全点上主动中断挂起。

        安全区域,为什么需要安全区域?要是业务线程都不执行(业务 线程处于sleep或者是blocked状态)那么程序就没办法进入安全点,对于这种情况,就必须 引入安全区域。安全区域是指能够确保在某一段代码片段之中,引用关系不会发生变化。因此,在这个区域中任意地主开始都是安全的,我们也可以把安全区域看作被扩展拉伸了的安全点


原文地址:https://blog.csdn.net/yudilan6/article/details/143582272

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!