在 Java 中如何计算一个对象到底使用了多少内存
鉴于我是 C/C++ 出身,有件事一直让我很不爽,就是 Java 缺乏一种方法去如何计算一个对象到底使用了多少内存。C++ 的 sizeof 方法可以清楚到查到原生类型或者类对象的内存大小。这个操作在C和 C++ 的指针运算拷贝内存及 IO 非常实用。
Java 中没有相应的操作,事实上 Java 不需要,原生类型的大小定义在Java语言规范中,而 C 和 C++ 依赖与操作系统。Java 有自己的基础围绕序列化,指针运算和内存拷贝不会使用,因为 Java 中没有指针。
但是每个Java程序员在某个时候想知道一个Java对象占用了多少内存,这个答案,结果证明没那么简单。
第一个区别就是
类的内存结构 没有实例属性
在Sun JVM中,每个对象(除了数组)有2个字的头,第一个字包含对象唯一哈希码加一些标志象锁状态和年龄,第二个字包含类对象的引用,同时,任何对象。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论