聊聊jvm的direct buffer统计
序
本文主要研究一下jvm的direct buffer统计
spring boot metrics
jvm.memory.used
{"name": "jvm.memory.used","description": "The amount of used memory","baseUnit": "bytes","measurements": [{"statistic": "VALUE","value": 137868592}],"availableTags": [{"tag": "area","values": ["heap","nonheap"]},{"tag": "id","values": ["Compressed Class Space","PS Survivor Space","PS Old Gen","Metaspace","PS Eden Space","Code Cache"]}]
}
jvm.memory.used包括heap和nonheap两大类
heap
http://localhost:8080/actuator/metrics/jvm.memory.used?tag=area:heap
{"name": "jvm.memory.used","description": "The amount of used memory","baseUnit": "bytes","measurements": [{"statistic": "VALUE","value": 84724536}],"availableTags": [{"tag": "id","values": ["PS Eden Space","PS Survivor Space","PS Old Gen"]}]
}
heap的话根据具体的垃圾收集器类型有不同的区分
nonheap
http://localhost:8080/actuator/metrics/jvm.memory.used?tag=area:nonheap
{"name": "jvm.memory.used","description": "The amount of used memory","baseUnit": "bytes","measurements": [{"statistic": "VALUE","value": 54874872}],"availableTags": [{"tag": "id","values": ["Metaspace","Compressed Class Space","Code Cache"]}]
}
nonheap这里包括3个,分别是Metaspace、Compressed Class Space、Code Cache
jvm.buffer.memory.used
http://localhost:8080/actuator/metrics/jvm.buffer.memory.used?tag=id:direct
{"name": "jvm.buffer.memory.used","description": "An estimate of the memory that the Java virtual machine is using for this buffer pool","baseUnit": "bytes","measurements": [{"statistic": "VALUE","value": 81920}],"availableTags": [{"tag": "id","values": ["direct","mapped"]}]
}
jvm.buffer.memory.used包含了direct、mapped两大类
direct
http://localhost:8080/actuator/metrics/jvm.buffer.memory.used?tag=id:direct
{"name": "jvm.buffer.memory.used","description": "An estimate of the memory that the Java virtual machine is using for this buffer pool","baseUnit": "bytes","measurements": [{"statistic": "VALUE","value": 81920}],"availableTags": []
}
mapped
http://localhost:8080/actuator/metrics/jvm.buffer.memory.used?tag=id:mapped
{"name": "jvm.buffer.memory.used","description": "An estimate of the memory that the Java virtual machine is using for this buffer pool","baseUnit": "bytes","measurements": [{"statistic": "VALUE","value": 0}],"availableTags": []
}
jvm.buffer.count
http://localhost:8080/actuator/metrics/jvm.buffer.count
{"name": "jvm.buffer.count","description": "An estimate of the number of buffers in the pool","baseUnit": "buffers","measurements": [{"statistic": "VALUE","value": 10}],"availableTags": [{"tag": "id","values": ["direct","mapped"]}]
}
jvm.buffer.count分direct和mapped两大类
direct
http://localhost:8080/actuator/metrics/jvm.buffer.count?tag=id:direct
{"name": "jvm.buffer.count","description": "An estimate of the number of buffers in the pool","baseUnit": "buffers","measurements": [{"statistic": "VALUE","value": 10}],"availableTags": []
}
mapped
http://localhost:8080/actuator/metrics/jvm.buffer.count?tag=id:mapped
{"name": "jvm.buffer.count","description": "An estimate of the number of buffers in the pool","baseUnit": "buffers","measurements": [{"statistic": "VALUE","value": 0}],"availableTags": []
}
jvm.buffer.total.capacity
http://localhost:8080/actuator/metrics/jvm.buffer.total.capacity
{"name": "jvm.buffer.total.capacity","description": "An estimate of the total capacity of the buffers in this pool","baseUnit": "bytes","measurements": [{"statistic": "VALUE","value": 81920}],"availableTags": [{"tag": "id","values": ["direct","mapped"]}]
}
jvm.buffer.total.capacity分direct和mapped两大类
direct
http://localhost:8080/actuator/metrics/jvm.buffer.total.capacity?tag=id:direct
{"name": "jvm.buffer.total.capacity","description": "An estimate of the total capacity of the buffers in this pool","baseUnit": "bytes","measurements": [{"statistic": "VALUE","value": 81920}],"availableTags": []
}
mapped
http://localhost:8080/actuator/metrics/jvm.buffer.total.capacity?tag=id:mapped
{"name": "jvm.buffer.total.capacity","description": "An estimate of the total capacity of the buffers in this pool","baseUnit": "bytes","measurements": [{"statistic": "VALUE","value": 0}],"availableTags": []
}
Native Memory Tracking
summary
jcmd 6878 VM.native_memory summary scale=MB
6878:Native Memory Tracking:Total: reserved=5625MB, committed=844MB
- Java Heap (reserved=4096MB, committed=577MB)(mmap: reserved=4096MB, committed=577MB)- Class (reserved=1066MB, committed=46MB)(classes #7027)(malloc=10MB #10535)(mmap: reserved=1056MB, committed=37MB)- Thread (reserved=36MB, committed=36MB)(thread #37)(stack: reserved=36MB, committed=36MB)- Code (reserved=246MB, committed=15MB)(malloc=2MB #3834)(mmap: reserved=244MB, committed=12MB)- GC (reserved=160MB, committed=148MB)(malloc=10MB #220)(mmap: reserved=150MB, committed=138MB)- Internal (reserved=10MB, committed=10MB)(malloc=10MB #10055)- Symbol (reserved=9MB, committed=9MB)(malloc=8MB #74319)(arena=2MB #1)- Native Memory Tracking (reserved=2MB, committed=2MB)(tracking overhead=2MB)
其中Internal部分包含了jvm中使用的directBuffer的大小
示例
public void run(String... args) throws Exception {// 分配一个256MB的直接缓冲区ByteBuffer buffer = ByteBuffer.allocateDirect(256 * 1024 * 1024);// 填充数据Random random = new Random();while (buffer.remaining() >= 4) {buffer.putInt(random.nextInt());}System.out.println("Allocated direct buffer with capacity " + buffer.capacity());}
VM.native_memory
jcmd 8077 VM.native_memory summary scale=MB
8077:Native Memory Tracking:Total: reserved=5881MB, committed=1099MB
- Java Heap (reserved=4096MB, committed=576MB)(mmap: reserved=4096MB, committed=576MB)- Class (reserved=1066MB, committed=46MB)(classes #7028)(malloc=10MB #10794)(mmap: reserved=1056MB, committed=37MB)- Thread (reserved=36MB, committed=36MB)(thread #37)(stack: reserved=36MB, committed=36MB)- Code (reserved=246MB, committed=16MB)(malloc=2MB #3889)(mmap: reserved=244MB, committed=13MB)- GC (reserved=160MB, committed=148MB)(malloc=10MB #220)(mmap: reserved=150MB, committed=138MB)- Internal (reserved=266MB, committed=266MB)(malloc=266MB #10055)- Symbol (reserved=9MB, committed=9MB)(malloc=8MB #74324)(arena=2MB #1)- Native Memory Tracking (reserved=2MB, committed=2MB)(tracking overhead=2MB)
可以看到Internal部分由之前的10MB增大到了266MB
jvm.buffer.memory.used
http://localhost:8080/actuator/metrics/jvm.buffer.memory.used?tag=id:direct
{"name": "jvm.buffer.memory.used","description": "An estimate of the memory that the Java virtual machine is using for this buffer pool","baseUnit": "bytes","measurements": [{"statistic": "VALUE","value": 268476416}],"availableTags": []
}
可以看到jvm.buffer.memory.used的direct部分也变大了
小结
jvm的direct buffer可以通过springboot的jvm.buffer.memory.used?tag=id:direct来统计,也可以通过MNT的Internal部分反应出来。
doc
- 聊聊HotSpot VM的Native Memory Tracking
- 聊聊jvm的-XX:MaxDirectMemorySize
- 聊聊openjdk的BufferPoolMXBean
- 聊聊jvm的Code Cache
- 聊聊jvm的CompressedClassSpace
- 聊聊jvm的Stack Memory
- 聊聊jvm的StringTable及SymbolTable
相关文章:
聊聊jvm的direct buffer统计
序 本文主要研究一下jvm的direct buffer统计 spring boot metrics jvm.memory.used {"name": "jvm.memory.used","description": "The amount of used memory","baseUnit": "bytes","measurements"…...

C/C++ 位段
目录 什么是位段? 位段的内存分配 位段的跨平台问题 什么是位段? 位段的声明与结构是类似的,但是有两个不同: 位段的成员必须是 int、unsigned int 或signed int 等整型家族。位段的成员名后边有一个冒号和一个数字 这是一个…...
Peter算法小课堂—树的应用
开篇先给大家讲个东西,叫vector,有老师称之为“向量”,当然与数学中的向量不一样啊,所以我要称之为“长度可变的数组” vector 头文件:#include <vector> 用法:vector<int> d; 尾部增加元素…...

FineBI:简介
1 介绍 FineBI 是帆软软件有限公司推出的一款商业智能(Business Intelligence)产品。 FineBI 是定位于自助大数据分析的 BI 工具,能够帮助企业的业务人员和数据分析师,开展以问题导向的探索式分析。 2 现阶段数据分析弊端 现阶…...
原神单机版【完全无脑搭建】⭐纯单机⭐*稳定版*
版本介绍 版本3.7稳定版【过分追新并不稳,合理才完美】 独家原神,游戏内自带剧情任务,完美仿官,一比一完美复制! 已经拥有完美剧情、任务、副本、卡池、深渊、全物品、和全部功能和皮肤。 送:GM全套工具…...

用通俗易懂的方式讲解:万字长文带你入门大模型
告别2023,迎接2024。大模型技术已成为业界关注焦点,你是否也渴望掌握这一领域却又不知从何学起? 本篇文章将特别针对入门新手,以浅显易懂的方式梳理大模型的发展历程、核心网络结构以及数据微调等关键技术。 如果你在阅读中收获…...
Invalid options in vue.config.js: “plugins“ is not allowed
项目场景: 安装并配置elementPlus报错。 问题描述 "plugins" is not allowed. plugins不被允许。参考官网修改配置文件vue.config.js。 解决方案: const AutoImport require(unplugin-auto-import/webpack) const Components require(un…...
四、C语言中的数组:数组的创建与初始化
其实在之前的学习中我们已经或多或少接触到了数组,有关scanf()的安全用法中我们提到了如何避免数组溢出的问题,详情可以查看二、C语言数据类型与变量(scanf和printf (4)完) 这一章我们将详细学习数组在C语言中的应用 1.数组的概…...

html5中各标签的语法格式总结以及属性值说明
有关闭标签的元素 a元素 <a href"" target"" title""></a>表格相关元素 table元素:表格标签caption元素:表头thead元素tbody元素:表格主体元素tfoot元素th元素tr元素:行标签td元素&…...
力扣(leetcode)第412题Fizz Buzz(Python)
412.Fizz Buzz 题目链接:412.Fizz Buzz 给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中: answer[i] “FizzBuzz” 如果 i 同…...

苦学golang半年,写了一款web服务器
苦学golang半年,写了一款web服务器 文章目录 苦学golang半年,写了一款web服务器example 项目地址:https://github.com/fengyuan-liang/jet-web-fasthttp 可以的话,请star支持一下🙂 苦学golang半年,写了一款…...

uniapp vue2 车牌号输入组件记录
uniapp vue2 车牌号输入案例记录 组件如图 直接上代码 1.html <template><view><view class"plate" :class"{show: show}"><view class"itemFirst flex-d"><view class"item item1" click"handl…...

Unity 点击对话系统(含Demo)
点击对话系统 可实现点击物体后自动移动到物体附近,然后弹出对话框进行对话。 基于Unity 简单角色对话UI脚本的编写(新版UI组件)和Unity 关于点击不同物品移动并触发不同事件的结合体,有兴趣可以看一下之前文章。 下边代码为U…...
vue接入高德地图
使用 JSAPI 安全模式,代理服务请以_AMapService 作为一级路由 index.html <script type"text/javascript">window._AMapSecurityConfig {serviceHost: "http://xx.xx.xx.xx:8223/_AMapService"};</script><script type"text/javascr…...

Linux的基本指令(5)
目录 bc指令 uname指令 压缩解压相关的指令 zip指令 unzip指令 tar打包压缩指令 tar解压解包指令 传输指令sz&rz 热键 关机命令 安装:yum install -y 指令 bc指令 bc命令可以很方便的进行浮点运算 Linux中的计算器 uname指令 语法:unam…...

华为商城秒杀时加密验证 device_data 的算法研究
前言 之前华为商城放出 Mate60 手机时, 想给自己和家人抢购一两台,手动刷了好几天无果后,决定尝试编写程序,直接发送 POST 请求来抢。通过抓包和简单重放发送后,始终不成功。仔细研究,发现 Cookie 中有一个名为 devic…...

Wrk压测发送Post请求的正确姿势
一、Wrk简介 wrk 是一个能够在单个多核 CPU 上产生显著负载的现代 HTTP 基准测试工具。它采用了多线程设计,并使用了像 epoll 和 kqueue 这样的可扩展事件通知机制。此外,用户可以指定 LuaJIT 脚本来完成 HTTP 请求生成、响应处理和自定义报告等功能。 …...
【管理篇 / 登录】❀ 06. macOS下使用USB配置线登录 ❀ FortiGate 防火墙
【简介】飞塔防火墙上都会配有CONSOLE接口,包装里都会配置一根USB配置线,通过这个接口和这根线,我们可以用命令的方式登录飞塔防火墙。随着苹果电脑的普及,我们来学习如何在macOS中使用USB配置线登录飞塔防火墙。 早期飞塔防火墙包…...
linux系统shell语言的自动化交互
自动化交互 自动化交互expect交互expect用法 sshpass概念shhpass的脚本批量拷贝文件批量传递秘钥批量修改密码 自动化交互 expect交互 yum -y install expect tcl tcl-devel //安装expect交互工具expect用法 用法: 1)#!/usr/bin/expect //定义脚本执行的shell 2)set …...
HarmonyOS ArkTS 三方库的基本使用(十六)
如何获取三方库 目前提供了两种途径获取开源三方库: 1、通过访问Gitee网站开源社区获取 在Gitee中,搜索OpenHarmony-TPC仓库,在tpc_resource中对三方库进行了资源汇总,可以供开发者参考。 2、通过OpenHarmony三方库中心仓获取 …...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...