gpt4 book ai didi

java - Java 中 DirectByteBuffer 的堆内存占用是多少?

转载 作者:行者123 更新时间:2023-11-30 09:46:42 28 4
gpt4 key购买 nike

绝大多数 DirectByteBuffer - 如果足够大 - 是在 Java 堆之外分配的。但是它的一部分仍然会在堆上,即使它很小。

任意大小的 DirectByteBuffer 在堆上占用多少字节?

最佳答案

这显然是实现定义的,因为 Java 规范不对这些东西做出任何保证。对于现代热点 VM:每个对象 2 个字的开销(准确地说,变量至少 1 个字,即使该对象没有任何变量)。现在你基本上必须数数。每个对象都必须是 8 字节对齐的。

让我们看一下 DirectByteBuffer 的例子:我们看到它存储一个对象(1 个字)。现在,如果它与其他东西共享此对象,您可能想要也可能不想计算它。如果你计算它,你将不得不找出存储的对象并计算它的大小(因此取决于你的确切代码路径)。由于 DirectByteBuffer 扩展了一个类,因此您还必须为其添加该大小。

是的,这是一项相当大的工作,我敢肯定不会为您做这件事 ;) 但它非常简单。我计算了至少 3 个引用和 29 个字节的原语..

关于java - Java 中 DirectByteBuffer 的堆内存占用是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7004845/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com