Java内存使用 - 原语

Mas*_*erV 5 java memory algorithm primitive

Algorithms第4版引用以下内容

"例如,如果你的计算机上有1GB的内存(10亿字节),你一次就不能在内存中容纳超过3200万个int值或1600万个double值."

int - 4个字节

3200万x 4 = 1.28亿字节

帮助我理解,为什么我们不能适应32万个int值,上面的128万字节大约是1GB或10亿字节的总内存消耗的1/10.

Kat*_*ona 4

这取决于您如何组织数据。在 Java 中,每个对象都有一个开销,这取决于 JVM,但通常为 8 或 16 字节。因此,如果将每个 int 值包装到一个对象中(例如Integer),那么您可能会超过 1GB。但是,如果将其分配为int[]数组,那么它应该很容易适合 1GB。

而且,这与问题并不严格相关,但反映了 @Anony-Mousse 的评论,微控制器有 JVM,而且我很确定这些 JVM 中的对象大小低于 8 个字节(尽管我没有找到确切的数据) )。