Java ~ Reference ~ FinalizerHistogram【总结】
前言
文章
- 相关系列:《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回收。Map<String, Entry> countMap = new HashMap<>();ReferenceQueue<Object> 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;
}
相关文章:
Java ~ Reference ~ FinalizerHistogram【总结】
前言 文章 相关系列:《Java ~ Reference【目录】》(持续更新)相关系列:《Java ~ Reference ~ FinalizerHistogram【源码】》(学习过程/多有漏误/仅作参考/不再更新)相关系列:《Java ~ Referenc…...
【MySQL】一文带你了解SQL
🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指…...
python基础学习3【NumPy矩阵与通用函数【矩阵相乘+平方+广播机制+转置】+ save、load、sort、repeat、unique、鸢尾花1】
NumPy矩阵与通用函数 a np.mat([[1,2],[3,4]])#生成矩阵b np.matrix([[1,7],[6,4]])np.bmat("a b") 矩阵的运算 矩阵特有属性: 属性 说明 T自身转置H共轭转置I逆矩阵A自身数据的二维数据视图 例如: np.matrix(a).T 矩阵相乘:…...
【Spring学习之更简单的读取和存储Bean对象】教会你使用五大类注解和方法注解去存储 Bean 对象
前言: 💞💞今天我们依然是学习Spring,这里我们会更加了解Spring的知识,知道Spring是怎么更加简单的读取和存储Bean对象的。也会让大家对Spring更加了解。 💟💟前路漫漫,希望大家坚持…...
微客云原生淘宝客APP小程序系统如何定制
淘宝是中国最大的电商网站,而淘宝的火热,也兴起了一个全新的行业,淘宝客。就是帮助淘宝商家推广商品的一种职业。目前淘宝每年有百分之10的销售业绩都是通过淘宝客贡献的,所以说淘宝客的市场越来越大。但是淘宝客要推广自己的产品…...
QT CTK插件开发(六) 多对一插件
CTK在软件的开发过程中可以很好的降低复杂性、使用 CTK Plugin Framework 提供统一的框架来进行开发增加了复用性 将同一功能打包可以提供多个应用程序使用避免重复性工作、可以进行版本控制提供了良好的版本更新迭代需求、并且支持动态热拔插 动态更新、开发更加简单快捷 方便…...
【Spring Boot整合MyBatis教程】
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发…...
ThinkPHP3.2.3通过局域网手机访问项目
折腾一上午, 试了nginx, 试了修改Apache的httpd.conf 试了关闭代理 试了手动配置网络 试了关闭防火墙 试了添加防火墙入站出站规则 问了五个ChatGPT 都没解决。 记录一下 wampserver3.0.4 Apache2.4.18 PHP 5.6.19 MySQL 5.7.11 所有服务启…...
2306C++虚继承
构 B{无序映<串,串>列;整 大小0;空 f(){大小;} }; //虚继承其实不错,但是占位置,占空间.构 C:虚 公 B{空 g(){} };构 D:虚 公 C{空 h(){} }; 构 S{}; 构 T{}; //元<类 T>构 E:虚 公 D{}; 构 E:虚 公 D{};空 主(){//E<S>e;e.f();打印(e.大小);//E<T>m;m…...
使用oracle遇到问题笔记
一、oracle还原到不同版本的oracle数据库报错和解决办法 产生:执行imp导入dmp备份文件时报错 错误内容:导入失败提示:“不是有效的导出文件, 标头验证失败”解决方法 解决办法:http://t.csdn.cn/pJyhc...
我和老刘又被搞惨了
前两天在调试PHY的时候遇到了一堆问题,老刘都不耐其烦的搞定了,这次我们开始调试音频部分,音频部分很简单,无非就是录音,要是能把录音的音频拿到了,那就万事大吉了。老刘也是信心满满,老刘对我说…...
DDD--基本概念
最近项目组一直在推DDD领域驱动设计,现就一些个人理解分享如下。 DDD(领域驱动设计)是一种软件开发方法论,旨在解决复杂业务场景下的软件设计与开发问题。以下是DDD的基本概念: 领域(Domain)&…...
chatgpt赋能python:Python多行注释
Python 多行注释 在 Python 中,我们经常需要写注释来解释代码或者用于调试。Python 的注释分为单行注释和多行注释,本文主要介绍 Python 中如何多行注释。 单行注释 在 Python 中,单行注释以符号 # 开头,可以写在代码的任何位置…...
JSP详细基础教学
目录 前言 环境设置 创建JSP文件 编写基本的JSP代码 部署和运行JSP页面 基础语法 前言 JSP(JavaServer Pages)是一种用于开发动态网页的Java技术。它允许将Java代码嵌入HTML页面中,以便在服务器端生成动态内容。在本次教程中ÿ…...
mysql修改登录用户的密码
文章目录 mysql5.7即mysql7.0 的修改方式mysql5.8即mysql8.0的修改方式如果修改完密码,发现旧密码和新密码都登录不进来怎么办?发现设置密码老报错 mysql5.7即mysql7.0 的修改方式 1.如果是使用docker里装的mysql 首先使用 [rootlocalhost /]# docker p…...
SNAT和DNAT
SNAT和DNAT 一、SNAT的策略及应用: 1.SNAT: (1)定义:又称源地址转换。源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围&…...
好程序员:月薪2万程序员的简历,原来长这个样子!
6月份现在正是招聘季节,不少同学java岗位投递不少,但回复不多,根本原因可能是java面试简历不够吸引人。 你的java简历不会写?看看别人就知道咋写了,这里给大家拆解一份好程序员月薪2万的java简历。 java自我评价模块&a…...
STM32之FreeRTOS
目录 FreeRTOS 介绍 什么是 FreeRTOS ? 为什么选择 FreeRTOS ? FreeRTOS 资料与源码下载 祼机开发与 FreeRTOS 祼机开发: FreeRTOS: FreeRTOS 实现多任务的原理 二、移植 FreeRTOS 手动移植 使用CubeMX快速移植 快速移植流程…...
有趣的图(二)(56)
小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 今日主题 咱们书接上回,上次学了图的基本概念,你都学会了吗? 咱们今天要学习内容如下&a…...
Linux之环境变量
目录 Linux之环境变量 分类 环境变量 定义 设置环境变量 设置环境变量(永久) 用户环境变量配置所在文件: 全局环境变量配置所在文件: 显示与取消环境变量 通过echo或printf打印环境变量 通过env或set显示默认的环境变量 用 …...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
