品品牌牌建建设设网站,做家政的在哪些网站推广,外贸网站建设要求,网站后台乱码怎么办前言 文章
相关系列#xff1a;《Java ~ Reference【目录】》#xff08;持续更新#xff09;相关系列#xff1a;《Java ~ Reference ~ FinalizerHistogram【源码】》#xff08;学习过程/多有漏误/仅作参考/不再更新#xff09;相关系列#xff1a;《Java ~ Referenc…前言 文章
相关系列《Java ~ Reference【目录】》持续更新相关系列《Java ~ Reference ~ FinalizerHistogram【源码】》学习过程/多有漏误/仅作参考/不再更新相关系列《Java ~ Reference ~ FinalizerHistogram【总结】》学习总结/最新最准/持续更新相关系列《Java ~ Reference ~ FinalizerHistogram【问题】》学习解答/持续更新涉及内容《Java ~ Reference ~ Finalizer【总结】》
一 概述 简介 FinalizerHistogram终结者柱状图类用于支持GC.finalizer_info诊断命令由虚拟机进行调用。终结者柱状图类的作用是统计Finalizer终结者总数其会以终结者所指对象/F类对象的类为维度对f-queue中的终结者进行统计返回倒序排序即从大到小的终结者总数统计结果以支持GC.finalizer_info诊断命令。 视图 二 使用 方法
static Entry[] getFinalizerHistogram() —— 获取终结者柱状图 —— 以终结者所指对象/F类对象的类为维度获取倒序排序的终结者总数数组。 方法首先会创建一个哈希映射用于承载所有的统计结果。随后从终结者类中获取f-queue遍历获取但不移除所有的终结者并以终结者所指对象/F类对象的类为维度统计终结者总数。每次统计后都需要断开当前线程与所指对象/F类对象的关联以避免影响其被GC回收。统计完成后从哈希映射中获取条目数组并以[实例总数]为比较条件倒序排序后返回。
// Method below is called by VM and VM expect certain entry class layout.
// 方法由VM调用并且VM期望某些条目类布局。/*** Description: --------------------------------------------------------------- 名称 ---------------------------------------------------------------* Description: 获取终结者柱状图* Description: --------------------------------------------------------------- 作用 ---------------------------------------------------------------* Description: 以终结者所指对象/F类对象的类为维度获取倒序排序的终结者总数数组。* Description: --------------------------------------------------------------- 逻辑 ---------------------------------------------------------------* Description: 方法首先会创建一个哈希映射用于承载所有的统计结果。随后从终结者类中获取f-queue遍历获取但不* Description: 移除所有的终结者并以终结者所指对象/F类对象的类为维度统计终结者总数。每次统计后都需要断开当前* Description: 线程与所指对象/F类对象的关联以避免影响其被GC回收。统计完成后从哈希映射中获取条目数组并以[* Description: 实例总数]为比较条件倒序排序后返回。* Description: --------------------------------------------------------------- 注意 ---------------------------------------------------------------* Description: ~* Description: --------------------------------------------------------------- 疑问 ---------------------------------------------------------------* Description: ~*/
static Entry[] getFinalizerHistogram() {// 方法首先会创建一个哈希映射用于承载所有的统计结果。随后从终结者类中获取f-queue遍历获取但不移除所有的// 终结者并以终结者所指对象/F类对象的类为维度统计终结者总数。每次统计后都需要断开当前线程与所指对象/F类对象// 的关联以避免影响其被GC回收。MapString, Entry countMap new HashMap();ReferenceQueueObject queue Finalizer.getQueue();queue.forEach(r - {Object referent r.get();if (referent ! null) {countMap.computeIfAbsent(referent.getClass().getName(), Entry::new).increment();/* Clear stack slot containing this variable, to decrease the chances of false retention with a conservative GC *//* 清理堆栈槽包含的当前变量, 以减少保守GC时错误保留的机会 */referent null;}});// 统计完成后从哈希映射中获取条目数组并以[实例总数]为比较条件倒序排序后返回。Entry fhe[] countMap.values().toArray(new Entry[countMap.size()]);Arrays.sort(fhe, Comparator.comparingInt(Entry::getInstanceCount).reversed());return fhe;
}