java - 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。似乎当我添加两个新字段时,大小更大,但如果我添加一个字段,它保持不变,为什么会这样?谢谢!
解决方案
推荐阅读
- go - 将 Go 项目上传到 GitHub 存储库
- wmi - 为 SCCM 查询创建自定义 WMI 类
- c++ - constexpr 与使用参数包扩展的 POD 结构成员联合
- docker - Docker-entrypoint.sh 导致带有 golang 的 ARM 映像“未找到”
- java - 错误:无法访问 jarfile - 运行 bfg.jar 时
- javascript - 使用前未定义的前向参考任务
- java - 关于 com.jcraft.jsch.JSchException: UnknownHostKey: xycom 的查询。DSA 密钥指纹是“ac:ew:....”
- node.js - create-react-app + npm start - 'react-scripts' 未被识别为内部或外部命令
- c++ - 复杂类型的 QVector 与 std::vector
- python - Django-Private-Chat in , TemplateDoesNotExist at /dialogs/