在 Java 中如何计算一个对象到底使用了多少内存

发布于 2021-03-12 13:02:59 字数 400 浏览 1236 评论 0

鉴于我是 C/C++ 出身,有件事一直让我很不爽,就是 Java 缺乏一种方法去如何计算一个对象到底使用了多少内存。C++ 的 sizeof 方法可以清楚到查到原生类型或者类对象的内存大小。这个操作在C和 C++ 的指针运算拷贝内存及 IO 非常实用。

Java 中没有相应的操作,事实上 Java 不需要,原生类型的大小定义在Java语言规范中,而 C 和 C++ 依赖与操作系统。Java 有自己的基础围绕序列化,指针运算和内存拷贝不会使用,因为 Java 中没有指针。

但是每个Java程序员在某个时候想知道一个Java对象占用了多少内存,这个答案,结果证明没那么简单。

第一个区别就是

类的内存结构 没有实例属性

在Sun JVM中,每个对象(除了数组)有2个字的头,第一个字包含对象唯一哈希码加一些标志象锁状态和年龄,第二个字包含类对象的引用,同时,任何对象。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文