当前位置: 首页 > news >正文

聊聊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算法小课堂—树的应用

开篇先给大家讲个东西&#xff0c;叫vector&#xff0c;有老师称之为“向量”&#xff0c;当然与数学中的向量不一样啊&#xff0c;所以我要称之为“长度可变的数组” vector 头文件&#xff1a;#include <vector> 用法&#xff1a;vector<int> d; 尾部增加元素…...

FineBI:简介

1 介绍 FineBI 是帆软软件有限公司推出的一款商业智能&#xff08;Business Intelligence&#xff09;产品。 FineBI 是定位于自助大数据分析的 BI 工具&#xff0c;能够帮助企业的业务人员和数据分析师&#xff0c;开展以问题导向的探索式分析。 2 现阶段数据分析弊端 现阶…...

原神单机版【完全无脑搭建】⭐纯单机⭐*稳定版*

版本介绍 版本3.7稳定版【过分追新并不稳&#xff0c;合理才完美】 独家原神&#xff0c;游戏内自带剧情任务&#xff0c;完美仿官&#xff0c;一比一完美复制&#xff01; 已经拥有完美剧情、任务、副本、卡池、深渊、全物品、和全部功能和皮肤。 送&#xff1a;GM全套工具…...

用通俗易懂的方式讲解:万字长文带你入门大模型

告别2023&#xff0c;迎接2024。大模型技术已成为业界关注焦点&#xff0c;你是否也渴望掌握这一领域却又不知从何学起&#xff1f; 本篇文章将特别针对入门新手&#xff0c;以浅显易懂的方式梳理大模型的发展历程、核心网络结构以及数据微调等关键技术。 如果你在阅读中收获…...

Invalid options in vue.config.js: “plugins“ is not allowed

项目场景&#xff1a; 安装并配置elementPlus报错。 问题描述 "plugins" is not allowed. plugins不被允许。参考官网修改配置文件vue.config.js。 解决方案&#xff1a; const AutoImport require(unplugin-auto-import/webpack) const Components require(un…...

四、C语言中的数组:数组的创建与初始化

其实在之前的学习中我们已经或多或少接触到了数组&#xff0c;有关scanf()的安全用法中我们提到了如何避免数组溢出的问题&#xff0c;详情可以查看二、C语言数据类型与变量&#xff08;scanf和printf (4&#xff09;完) 这一章我们将详细学习数组在C语言中的应用 1.数组的概…...

html5中各标签的语法格式总结以及属性值说明

有关闭标签的元素 a元素 <a href"" target"" title""></a>表格相关元素 table元素&#xff1a;表格标签caption元素&#xff1a;表头thead元素tbody元素&#xff1a;表格主体元素tfoot元素th元素tr元素&#xff1a;行标签td元素&…...

力扣(leetcode)第412题Fizz Buzz(Python)

412.Fizz Buzz 题目链接&#xff1a;412.Fizz Buzz 给你一个整数 n &#xff0c;找出从 1 到 n 各个整数的 Fizz Buzz 表示&#xff0c;并用字符串数组 answer&#xff08;下标从 1 开始&#xff09;返回结果&#xff0c;其中&#xff1a; answer[i] “FizzBuzz” 如果 i 同…...

苦学golang半年,写了一款web服务器

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

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)

点击对话系统 可实现点击物体后自动移动到物体附近&#xff0c;然后弹出对话框进行对话。 基于Unity 简单角色对话UI脚本的编写&#xff08;新版UI组件&#xff09;和Unity 关于点击不同物品移动并触发不同事件的结合体&#xff0c;有兴趣可以看一下之前文章。 下边代码为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 热键 关机命令 安装&#xff1a;yum install -y 指令 bc指令 bc命令可以很方便的进行浮点运算 Linux中的计算器 uname指令 语法&#xff1a;unam…...

华为商城秒杀时加密验证 device_data 的算法研究

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

Wrk压测发送Post请求的正确姿势

一、Wrk简介 wrk 是一个能够在单个多核 CPU 上产生显著负载的现代 HTTP 基准测试工具。它采用了多线程设计&#xff0c;并使用了像 epoll 和 kqueue 这样的可扩展事件通知机制。此外&#xff0c;用户可以指定 LuaJIT 脚本来完成 HTTP 请求生成、响应处理和自定义报告等功能。 …...

【管理篇 / 登录】❀ 06. macOS下使用USB配置线登录 ❀ FortiGate 防火墙

【简介】飞塔防火墙上都会配有CONSOLE接口&#xff0c;包装里都会配置一根USB配置线&#xff0c;通过这个接口和这根线&#xff0c;我们可以用命令的方式登录飞塔防火墙。随着苹果电脑的普及&#xff0c;我们来学习如何在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 三方库的基本使用(十六)

如何获取三方库 目前提供了两种途径获取开源三方库&#xff1a; 1、通过访问Gitee网站开源社区获取 在Gitee中&#xff0c;搜索OpenHarmony-TPC仓库&#xff0c;在tpc_resource中对三方库进行了资源汇总&#xff0c;可以供开发者参考。 2、通过OpenHarmony三方库中心仓获取 …...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...