Java虚拟机 safepoints 初探

时间:2014-03-31 08:58:54   收藏:0   阅读:509

safepoint的定义很不规范,还跟JVM的具体实现有关,我们的讨论主要针对Hotspot VM。

  

先看看openjdk的官方解释:  http://openjdk.java.net/groups/hotspot/docs/HotSpotGlossary.html

Safepoint    : 在程序执行过程中,该点处的所有GC roots 是已知的 和 所有heap object contents是 一致的(consistent)。<br>从全局观点来看,所有线程必须在GC 运行前,在一个safepoint处阻塞(block)。<br>从局部观点来看,safepoint是一个代码块中特殊的一点,该处正在执行的线程可以因GC而阻塞。  <br>很多调用点都满足要求,可以成为safepoints。存在 strong invariants在所有safepoints中都成立,而在non-safepoints中可能就被无视了。<br>Java code 和c/c++ code的优化都是在safepoints之间,很少跨过safepoints。<br>JIT编译器在每个safepoint处生成(emit)了一个GC map。<br>VM中的C/C++ code 使用格式化的基于宏的约定来标记可能的safepoints。

  

 

什么时候使用safepoints:

 

Troubleshooting in safepoints:

通常情况下,safepoints正常工作。有问题时,可以使用下面两个选项帮助诊断问题:

 

 

 

参考文章:

openjdk  官方文档

safepoints in hotspot jvm

Java虚拟机 safepoints 初探,布布扣,bubuko.com

原文:http://www.cnblogs.com/ridox/p/3634827.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!