jvm源码阅读笔记[4]:从GC说到vm operation

本文从GC出发,详细解析了JVM中的VMOperation,包括VMThread、VMOperationQueue的工作原理,以及如何处理不同优先级的VM操作。通过源码分析,阐述了在安全点执行VM操作的机制,并介绍了VM操作的四种模式,有助于理解JVM内部的内存管理和性能优化。
摘要由CSDN通过智能技术生成

    从零开始看源码,旨在从源码验证书上的结论,探索书上未知的细节。有疑问欢迎留言探讨
    个人源码地址:https://github.com/FlashLightNing/openjdk-notes
    还有一个openjdk6,7,8,9的地址:https://github.com/dmlloyd/openjdk
    jvm源码阅读笔记[1]:如何触发一次CMS回收
    jvm源码阅读笔记[2]:你不知道的晋升阈值TenuringThreshold详解
    jvm源码阅读笔记[3]:从内存分配到触发GC的细节
    jvm源码阅读笔记[4]:从GC说到vm operation
    jvm源码阅读笔记[5]:内存分配失败触发的GC究竟对内存做了什么?

    
    上一篇文章中,我们说到如果在堆中分配失败,会通过VM触发一次由分配失败触发的一次GC。
    

VM_GenCollectForAllocation op(size, is_tlab, gc_count_before);//VM操作
    VMThread::execute(&op);

    在讲VM_GenCollectForAllocation这个vm operation具体都做了什么前,先来看看VMThread是个什么东西。
    VMThread可以用以下命令查到。
    

jstack pid|grep VM

    
    在虚拟机创建时就会创建一个单例原生线程VMThread。这个线程能派生出其他线程。同时,这个线程的主要的作用是维护一个vm操作队列(VMOperationQueue),用于处理其他线程提交的vm operation,比如执行GC等。
    来看看VMOperationQueue:
    

class VMOperationQueue : 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值