【安全点】

news/2024/11/2 19:31:35/

廖志伟的自我介绍

在OopMap的协助下,HotSpot可以快速准确地完成GC Roots枚举,但一个很现实的问题随之而来:可能导致引用关 系变化,或者说导致OopMap内容变化的指令非常多,如果为每一条指令都生成对应的OopMap,那将会需要大量的 额外存储空间,这样垃圾收集伴随而来的空间成本就会变得无法忍受的高昂。 实际上HotSpot也的确没有为每条指令都生成OopMap,只是在“特定的位置”记录了这些信息,这些位置被称为安全 点(Safepoint)。有了安全点的设定,也就决定了用户程序执行时并非在代码指令流的任意位置都能够停顿下来开 始垃圾收集,而是强制要求必须执行到达安全点后才能够暂停。因此,安全点的选定既不能太少以至于让收集器等待 时间过长,也不能太过频繁以至于过分增大运行时的内存负荷。安全点位置的选取基本上是以“是否具有让程序长时 间执行的特征”为标准进行选定的,因为每条指令执行的时间都非常短暂,程序不太可能因为指令流长度太长这样的 原因而长时间执行,“长时间执行”的最明显特征就是指令序列的复用,例如方法调用、循环跳转、异常跳转等都属于 指令序列复用,所以只有具有这些功能的指令才会产生安全点。

如何在垃圾收集发生时让所有线程都跑到最近的安全点?

有两种方案可供选择:抢先式中断(Preemptive Suspension)和主动式中断(Voluntary Suspension)

抢先式中断不需要线程的执行代码主动去配合,在垃圾收集发生时,系统首先把所有用户线程全部中断,如果发现有 用户线程中断的地方不在安全点上,就恢复这条线程执行,让它一会再重新中断,直到跑到安全点上。现在几乎 没有虚拟机实现采用抢先式中断来暂停线程响应GC事件。

主动式中断的思想是当垃圾收集需要中断线程的时候,不直接对线程操作,仅仅简单地设置一个标志位,各个 线程执行过程时会不停地主动去轮询这个标志,一旦发现中断标志为真时就自己在最近的安全点上主动中断挂起。 轮询标志的地方和安全点是重合的,另外还要加上所有创建对象和其他需要在Java堆上分配内存的地方,这是为 了检查是否即将要发生垃圾收集,避免没有足够内存分配新对象。

程序“不执行”的时候线程如何达到安全点?

安全点机制保证了程序执行时,在不太长的时间内就会遇到可进入垃圾收集过程的安全点。但是,程序“不执行” 的时候呢?所谓的程序不执行就是没有分配处理器时间,典型的场景便是用户线程处于Sleep状态或者Blocked状 态,这时候线程无法响应虚拟机的中断请求,不能再走到安全的地方去中断挂起自己,虚拟机也显然不可能持续 等待线程重新被激活分配处理器时间。对于这种情况,就必须引入安全区域(Safe Region)来解决。 安全区域是指能够确保在某一段代码片段之中,引用关系不会发生变化,因此,在这个区域中任意地方开始垃圾 收集都是安全的。我们也可以把安全区域看作被扩展拉伸了的安全点。 当用户线程执行到安全区域里面的代码时,首先会标识自己已经进入了安全区域,那样当这段时间里虚拟机要发起垃圾收集时就不必去管这些已声明自己在安全区域内的线程了。当线程要离开安全区域时,它要检查虚拟机是 否已经完成了根节点枚举(或者垃圾收集过程中其他需要暂停用户线程的阶段),如果完成了,那线程就当作没事发生过,继续执行;否则它就必须一直等待,直到收到可以离开安全区域的信号为止。


http://www.ppmy.cn/news/529781.html

相关文章

腾讯安全管家

QQ电脑管家 http://dlied6.qq.com/invc/xfspeed/qqpcmgr/versetup/portal/portal/PCMgr_Setup_13_1_19961_225.exe http://dlied6.qq.com/invc/xfspeed/qqpcmgr/versetup/portal/portal/PCMgr_Setup_13_0_19803_222.exe http://dlied6.qq.com/invc/xfspeed/qqpcmgr/versetup…

网站被百度网址安全中心 警告 该怎么取消拦截提示

今天早晨一上班,习惯性的打开我们公司的网站,发现公司网站竟然跳转到了赌博、彩票网站上去了,我还奇了怪了,于是去百度搜索我们公司网站,发现网站在百度搜索出现:“百度网址安全中心提醒您:该站…

qq登录测试点

一、基本功能测试: 输入正确的用户名和密码登录成功输入错误的用户名密码登录失败用户名正确,密码错误,是否提示输入密码错误?用户名错误,密码正常,是否提示输入用户名错误?用户名和密码都错误…

危险的QQ

最近在使用QQ时,发现他增加了一个很好的功能,能找回可能和你有关系的朋友,同学。这些人可能你已经丢失了联系方式。 但是!!! 我发现他找出来的人,大部分都是实名!我想绝大多数人上…

安全管理中心

系统管理 应对系统管理员进行身份鉴别,只允许其通过特定的命令或操作界面进行系统管理操作,并对这些操作进行审计 应通过系统管理员对系统的资源和运行进行配置,控制和管理,包括用户身份,系统资源配置,系统…

android手机qq账号管理在哪里,qq安全中心手机版之功能详解

qq安全中心是由腾讯推出的易于保护账号安全性的产品,同时现在推出了手机版本,支持安卓系统和IOS系统。下面学习啦小编以安卓系统为例,具体的说下安全中心的功能。 qq安全中心手机版之功能详解 打开手机桌面的”QQ安全中心“应用,进…

QQ 安全相关问题

文章目录 1.QQ 开通了设备锁,被盗后坏人能否登录?2.目前QQ和QQ群的用户量有多少? 1.QQ 开通了设备锁,被盗后坏人能否登录? QQ 开通设备锁后, 在不常用设备(如电脑,手机,…

qq安全保护进程更改计算机,QQ安全中心

“禁止帐号在手机、平板电脑上登录”的使用小手册 亲爱的用户,QQ登录保护功能升级,您可以轻松保护帐号不被他人在手机或者平板电脑上登录。下面让小安为您介绍下这个新功能吧! 1、如何保护帐号不被他人在手机或者平板电脑上登录? …