博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java:获取一个对象占用内存的大小
阅读量:6140 次
发布时间:2019-06-21

本文共 987 字,大约阅读时间需要 3 分钟。

hot3.png

在 中给出了一个很好的答案。
首先,将下面的类编译并放入jar中:
import java.lang.instrument.Instrumentation;public class ObjectSizeFetcher {    private static Instrumentation instrumentation;    public static void premain(String args, Instrumentation inst) {        instrumentation = inst;    }    public static long getObjectSize(Object o) {        return instrumentation.getObjectSize(o);    }}

在MANIFEST.MF中添加如下内容:
Premain-Class: ObjectSizeFetcher

然后,我们就可以在main函数中尝试获取对象占用的内存大小了:
public class C {    private int x;    private int y;    public static void main(String [] args) {        System.out.println(ObjectSizeFetcher.getObjectSize(new C()));    }}

将上面的代码打包成jar后,执行:
java -javaagent:ObjectSizeFetcherAgent.jar C

通过 -javaagent参数和MANIFEST.MF中的内容,在执行 类C中的main函数之前,ObjectSizeFetcher中的premain方法会执行。这样,instrumentation就有了应用的Instrumentation类型的对象。
更多:
Calculate size of Object in Java:
In Java, what is the best way to determine the size of an object?:
JavaAgent:
jamm:

转载于:https://my.oschina.net/letiantian/blog/372893

你可能感兴趣的文章
查看端口,关闭端口
查看>>
代码托管平台简介
查看>>
linux:yum和apt-get的区别
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Mindjet MindManager 2019使用教程:
查看>>
游戏设计的基本构成要素有哪些?
查看>>
详解 CSS 绝对定位
查看>>
AOP
查看>>
我的友情链接
查看>>
NGUI Label Color Code
查看>>
.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
查看>>
vue组件开发练习--焦点图切换
查看>>
浅谈OSI七层模型
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
python实现牛顿法求解求解最小值(包括拟牛顿法)【最优化课程笔记】
查看>>
js中var、let、const的区别
查看>>