JAVA 查询对象大小 查询当前JVM堆内存

news/2024/12/25 10:27:30 标签: java, jvm, 开发语言

  1. init‌:表示JVM在启动时从操作系统请求的初始内存容量(以字节为单位)。这个值在运行过程中可能会变化,因为JVM可能会向操作系统请求更多的内存,也可能会释放内存给系统‌。

  2. used‌:表示当前已经使用的内存量(以字节为单位)。这个值会随着程序的运行而变化‌。

  3. committed‌:表示保证由JVM可以使用的内存量(以字节为单位)。这个值可能会随时间变化(增加或减少),因为JVM可能会释放内存给系统,所以committed的值可能小于init,但始终大于或等于used‌。

  4. max‌:表示可以用于内存管理的最大内存量(以字节为单位。这个值可能未定义,如果定义了,最大内存量可能会随时间变化。如果used大于committed,即使used小于等于max,内存分配尝试也会失败,这通常是因为系统的虚拟内存不足‌。

java">    public static void main(String[] args) {
        ArrayList<Object> list = new ArrayList<>();
        System.out.println(ObjectSizeCalculator.getObjectSize(list) / 1024 / 1024 + " MB");
        // 获取内存MXBean
        MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
        // 获取堆内存使用情况
        MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage();
        // 打印堆内存信息
        System.out.println("Heap Memory Usage:");
        System.out.println("Init: " + heapMemoryUsage.getInit() / 1024 / 1024 + " MB");
        System.out.println("Used: " + heapMemoryUsage.getUsed() / 1024 / 1024 + " MB");
        System.out.println("Committed: " + heapMemoryUsage.getCommitted() / 1024 / 1024 + " MB");
        System.out.println("Max: " + heapMemoryUsage.getMax() / 1024 / 1024 + " MB");
    }


http://www.niftyadmin.cn/n/5798989.html

相关文章

vim多窗格

vim打开文件分为三个阶段&#xff1a;buffer、window与tab buffer就是在同一个界面打开的文件window就是使用水平分割与垂直分割的窗口tab则是可以是上述两者的总集合 buffer :e filename在已打开文件的界面中再打开一个新文件&#xff0c;显示这个新文件&#xff0c;原文件被隐…

前端对页面数据进行缓存

页面录入信息&#xff0c;退出且未提交状态下&#xff0c;前端对页面数据进行存储 前端做缓存&#xff0c;一般放在local、session和cookies里面&#xff0c;但是都有大小限制&#xff0c;如果页面东西多&#xff0c;比如有上传的图片、视频&#xff0c;浏览器会抛出一个Quota…

41 stack类与queue类

目录 一、简介 &#xff08;一&#xff09;stack类 &#xff08;二&#xff09;queue类 二、使用与模拟实现 &#xff08;一&#xff09;stack类 1、使用 2、OJ题 &#xff08;1&#xff09;最小栈 &#xff08;2&#xff09;栈的弹出压入序列 &#xff08;3&#xf…

Vscode GStreamer插件开发环境配置

概述 本教程使用vscode和Docker搭建Gstreamer2.24的开发环境&#xff0c;可以用于开发调试Gstreamer程序或者自定义插件开发。 1. vscode依赖插件 C/C Extension Pack&#xff08;ms-vscode.cpptools-extension-pack&#xff09;&#xff1a;该插件包包含一组用于 Visual St…

如何完全剔除对Eureka的依赖,报错Cannot execute request on any known server

【现象】 程序运行报错如下&#xff1a; com.netflix.discovery.shared.transport.TransportException报错Cannot execute request on any known server 【解决方案】 &#xff08;1&#xff09;在Maven工程中的pom去掉Eureka相关的引用&#xff08;注释以下部分&#xff0…

【进阶编程】代理模式和适配模式的比较

代理模式和适配器模式(Adapter Pattern)都属于结构型设计模式,它们在某些方面有相似之处,都涉及到为其他对象提供间接访问和包装,但它们的核心目的是不同的。下面是对代理模式和适配器模式的详细比较: 1. 目的 代理模式(Proxy Pattern): 代理模式的目的是通过一个代理…

微软在AI时代的战略布局和挑战

微软的CEO萨提亚纳德拉&#xff08;Satya Nadella&#xff09;在与投资人比尔格里&#xff08;Bill Gurley&#xff09;和布拉德格斯特纳&#xff08;Brad Gerstner&#xff09;的一场深度对话中&#xff0c;详细回顾了微软在AI时代的战略布局与所面临的挑战。这场对话不仅总结…

【C++决策和状态管理】从状态模式,有限状态机,行为树到决策树(一):从电梯出发的状态模式State Pattern

前言 &#xff08;题外话&#xff09;nav2系列教材&#xff0c;yolov11部署,系统迁移教程我会放到年后一起更新&#xff0c;最近年末手头事情多&#xff0c;还请大家多多谅解。回顾我们整个学习历程&#xff0c;我们已经学习了很多C的代码特性&#xff0c;也学习了很多ROS2的跨…