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

本文探讨了在Java中估算对象内存分配的三种方法:利用Profiler、使用仪器工具和使用JOL库。针对每种方法的优缺点进行了比较,特别推荐了Twitter存档中的ObjectSizeCalculator,它适用于大对象且在Hotpot、OpenJDK和TwitterJDK上运行良好。
摘要由CSDN通过智能技术生成

# 本文展示了在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值