# 本文展示了在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图书馆。它是一个非常强大的库,可以提供关于对象权重和对象实例分配的内存的详细估计。要使用库,我们需要添加依赖项:
```
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.16</version>
</dependency