首页 > 解决方案 > Java中如何计算对象大小?

问题描述

我创建了 Java 代理来计算对象大小

public class InstrumentationAgent
{
   private static Instrumentation mInstrumentation;

   public static void premain(final String agentArgs, final Instrumentation inst) 
   {
      mInstrumentation = inst;
   }

   public static long getObjectSize(final Object object) 
   {
      if (mInstrumentation == null) {
         throw new IllegalStateException("Agent not initialized.");
      }
         return mInstrumentation.getObjectSize(object);
   }

所以它返回对象占用的内存大小,但我注意到当我添加新字段来测试对象时,它有时会返回相同数量的内存

public class TestObject
{
    private String firstInt= 1;
    private String secondInt = 2;

    public static void main(String[] args)
    {
       System.out.println(InstrumentationAgent.getObjectSize(new TestObject()));
    }
}

它输出 16。当我从测试类中删除“secondInt”时,它仍然输出 16。似乎当我添加两个新字段时,大小更大,但如果我添加一个字段,它保持不变,为什么会这样?谢谢!

标签: javamemory

解决方案


推荐阅读