在Java虚拟机上班是一种怎样的体验? (2)

在Java虚拟机上班是一种怎样的体验?

145 人赞同了该回答

 

 感谢 @FinalizerThread 同学邀请。

人在JVM,刚下晚班。

时间紧迫,简单说几句。

和这位同学一样,我也是GC部门的员工,公司待遇确实不错,这方面还是很有竞争力的。

至于我的工作嘛,跟垃圾回收密切相关!

你们也知道在Java中,除了基础的强引用外,还有四种特殊的引用:

FinalReference

软引用(SoftReference)

弱引用(WeakReference)

虚引用(PhantomReference)

前面FinalizerThread同学提到的Finalizer其实就是FinalReference的子类。

我的工作就是在垃圾回收时,把这些个特殊引用一个个加入到它们各自对应的队列里面去。

拿上面FinalizerThread同学提到的Finalizer对象来说,就是我来把它加到它所指向的队列中,再由FinalizerThread同学去从这个队列里面取出来处理的。

  

 

 

在Java虚拟机上班是一种怎样的体验?

 898 人赞同了该回答

 

 这个问题我来简单回答一下。

看了前面几位的回答,真的是旱的旱死,涝的涝死。我一天天忙得气都喘不过来,你们居然还有时间摸鱼!

我算是JVM公司里每天到的最早的几个了,跟随Threads::create_vm就起来了。

和楼上两位一样的是我也有一个工作队列,叫_vm_thread,其类型是VMOperationQueue。

和楼上两位不一样的是他们工作在二楼Java层,而我工作在一楼native层。

工作节奏这个东西真的是不同部门差得很远,我所在的部门就我一个人,是一个单例线程,我要干的就是不断从工作队列里面取出操作来执行。

这个队列里面装的都是一个个封装成VM_Operation的东西,这是它们的基类,具体来说,有几十种操作,列举一部分,你们随意感受一下:

#define VM_OPS_DO(template) \ template(None) \ template(ThreadStop) \ template(ThreadDump) \ template(PrintThreads) \ template(FindDeadlocks) \ template(ClearICs) \ template(ForceSafepoint) \ template(ForceAsyncSafepoint) \ template(Deoptimize) \ template(DeoptimizeFrame) \ template(DeoptimizeAll) \ template(ZombieAll) \ template(Verify) \ template(PrintJNI) \ template(HeapDumper) \ template(DeoptimizeTheWorld) \ template(CollectForMetadataAllocation) \ template(GC_HeapInspection) \ template(GenCollectFull) \ template(GenCollectFullConcurrent) \ template(GenCollectForAllocation) \ template(ParallelGCFailedAllocation) \ template(ParallelGCSystemGC) \ ······

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsjxw.html