- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
C malloc
实现通常不会分配请求的精确内存量,而是消耗固定大小的内存运行,例如具有二次方大小,因此 1025 字节的分配实际上占用了 2048 字节的段,其中 1023 字节作为 slop 丢失。
HotSpot 是否对 Java 数组使用类似的分配机制?如果是这样,分配 Java 数组的正确方法是什么,这样就没有溢出? (例如,数组长度应该是 2 的幂还是 2 的幂减去一些固定的开销?)
最佳答案
如果您问的是语言,答案是:未指定(与 C 相同)
如果您询问的是具体实现,请查看该实现。我相信 Hotspot 的粒度是 8 字节;即对象大小向上舍入到下一个粒度边界。如果问题是关于在没有足够的可用堆时增加堆大小,那么它取决于实现、GC 设置、堆大小参数等;使得准确回答变得不切实际。
编辑:使用一个小的反射 hack,访问 sun.misc.Unsafe 类(仅限 Oracle JRE),对象引用可以转换为内存地址;输出两个连续分配的数组的地址自己检查。
我基本上在这里问了同样的问题:Determine the optimal size for array with respect to the JVM's memory granularity (答案包括使用 Unsafe 类检查对象大小的示例)
关于java - Java 数组在 HotSpot 中使用内存的精确程度如何(即多少 slop)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30786397/
我目前正在研究数据库,我看到 degree 和 cardinality 用作相同的术语,或在某些其他学位定义为否。关系中涉及的实体的数量,并进一步分类为一元、二元和三元。 某些放置度数定义为关系类型的
我是一名优秀的程序员,十分优秀!