GC笔记--Native线程

Posted xuyv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GC笔记--Native线程相关的知识,希望对你有一定的参考价值。

Native线程不能直接Access对象的引用,因此整个native线程是GC安全区域(GC safe region),GC发生时native线程可以继续执行。

但是,一旦Native线程调用VM接口,Native线程就需要切换状态,切换成非GC安全。

比如调用Java的JNI接口,Native线程首先尝试切换成Runable态。切换时,检查是否已发生GC。如果已经在GC,等待GC完成;如果没有GC,成功切换为Runable态,阻塞GC的进行。

当调用结束时,Native线程从Runable态切换回Native态,回到GC安全点。

 

所以Native线程(非VM接口调用状态),不响应GC,不被GC阻塞。

NatIve线程进入VM接口调用,则与GC互相阻塞。

以上是关于GC笔记--Native线程的主要内容,如果未能解决你的问题,请参考以下文章

Android Native APP开发笔记:多线程编程

《深入理解java虚拟机》学习笔记四/垃圾收集器GC学习/一

黑马公开课——运行原理与GC学习笔记

多线程参考笔记

Synchronized锁升级过程 学习笔记

Synchronized锁升级过程 学习笔记