首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java虚拟机--你的对象有多大如何计算对象大小

javaagent:xxx.jar 被代理的类 说完了Instrumentation,接下来就用它来实际测量下对象的大小: 普通对象: Instrumentation注入类: public class ObjectSize...(image-c1c0a4-1525935829095)] 将打包好的jar文件,用解压缩工具打开,修改META-INF/MANIFEST.MF文件,告诉虚拟机在程序执行的时候执行ObjectSize类的...编译运行 此步骤,是实际的运行过程,需要将上面的2个类进行编译,并且将ObjectSize打包,执行“java -javaagent:ObjectSize.jar JVMTest4”命令。...(ObjectSize.sizeOf(new ObjectA[2])); System.out.println(ObjectSize.sizeOf(new ObjectB[0]));...System.out.println(ObjectSize.sizeOf(new ObjectB[1])); System.out.println(ObjectSize.sizeOf

2.2K50
您找到你想要的搜索结果了吗?
是的
没有找到

让你亲眼看见java对象内存大小(基于64位操作系统)

实验(观察对象的大小) 新建项目(以IDEA为例)ObjectSize (1.8)一个单独的项目 创建文件ObjectSizeAgent import java.lang.instrument.Instrumentation...运行时需要该Agent Jar的类,加入参数: -javaagent:E:\java\test\ObjectSize\target\ObjectSize-1.0-SNAPSHOT.jar 不开启压缩指针...,减号就表示不开启 -javaagent:E:\java\test\ObjectSize\target\ObjectSize-1.0-SNAPSHOT.jar -XX:-UseCompressedClassPointers...不开启指针压缩长度是8)4 + int类型 4 + padding 0(长度正好16是8的2倍) 那么这里开启指针压缩,我们也可不开启指针压缩,通过JVM参数 -javaagent:E:\java\test\ObjectSize...\target\ObjectSize-1.0-SNAPSHOT.jar -XX:-UseCompressedClassPointers -XX:-UseCompressedClassPointers

65230

这个队列的思路真的好,现在它是我简历上的亮点了。

这个时候我要放的元素计算出来的 size 是 300,也就是 objectSize 是 300。...sum+objectSize=1100,比 memoryLimit 的值大,是不是在这个 while 判断的时候被拦截住了: 之后,假设队列里面又释放了一个 size 为 600 的对象。...这个时候执行 memory.add(-objectSize) 方法,memory 变为 200: 那么会调用 signalNotLimited 方法,唤醒这个被拦截的这个哥们: 这个哥们一被唤醒,一看代码...: while (sum + objectSize >= memoryLimit) { notLimited.await(); } 心里想:我这里的 sum 是 800,objectSize...这个地方的代码肯定得这样,每次都查看最新的 memory 值才行: while (memory.sum() + objectSize >= memoryLimit) { notLimited.await

31210

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券