栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

如何在Java中估计对象内存分配

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Java中估计对象内存分配

# 本文展示了在Java中估计对象内存分配的三种方法。对所有方法和实例进行了比较。

# 估计分配的内存(不是对象大小)

以前,我解释了如何计算对象的大小考虑OS二进制或对象和原语类型。在本文中,我将只回顾估计给定对象已经分配的内存大小的方法。有几种方法可以做到。在这里,我们回顾最流行的。

# 利用Profiler估计内存

估计某些对象的内存最简单的方法是使用分析器(如可视VM.

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/67f9ac66a2594ed2a673df6152f31f1e~tplv-k3u1fbpfcp-zoom-1.image)

这种方法的问题是,您必须连接到运行中的JVM,由于安全原因,这在生产环境中可能是不可能的。

# 使用仪器估计内存

另一种由给定对象估计分配内存的方法是使用仪器工具。简而言之,我们需要创建一个类并将其编译成JAR。创建JAR之后,我们必须与JAR一起执行JVM。您可以找到有关此方法的详细信息。这里。这种方法的缺点是需要向JVM中添加特定的JAR,由于安全性或相关问题,它可能无法用于生产。

# 利用JOL库估计内存

作为另一种选择,我们可以使用Jol图书馆。它是一个非常强大的库,可以提供关于对象权重和对象实例分配的内存的详细估计。要使用库,我们需要添加依赖项:

```

    org.openjdk.jol
    jol-core
    0.16

```

之后,我们就可以这样使用它:

```
out.println(GraphLayout.parseInstance(myObject).totalSize() / 1024000d + " MB")
```

因此,我们将看到myObject及其内部内容分配的兆字节数。不幸的是,这种方法将消耗大量的内存和时间,并且不适合大多数对象。

# 来自Twitter存档的ObjectSizeCalculator

在开放源码中有一个工具类。Twitter GitHub储存库,它可以估计给定对象实例的分配内存。ObjectSizeCalculator。这个解决方案不会占用很多内存或时间。估计过程需要几秒钟,即使对大物体也是如此。这个类型的使用非常简单:

```
ObjectSizeCalculator.getObjectSize(address)
```

我推荐这种方法,但请记住,它只受Java Hotpot、OpenJDK和TwitterJDK的支持。

# 最后

谢谢大家的观看,小伙伴们如果觉得我写的不错,点赞+收藏!
更多的java学习资料博主已经整理好了,需要的小伙伴可以点击[获取学习资料](https://docs.qq.com/doc/DWkd2b1FqcmlEeGdK)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756304.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号