Java VM如何分配内存?

时间:2011-03-06 19:12:46

标签: java arrays memory jvm linked-list

我想知道Java VM如何分配内存? JAVA在我们的计算机的物理内存中分配内存吗? 现在我试图比较两个数据结构,链接列表和数组在页面错误和缓存命中/未命中方面的谨慎,以查看每个数据结构在真正低级别(硬盘,内存,缓存级别)的性能< / p>

2 个答案:

答案 0 :(得分:5)

我不知道这是否能回答你的问题,但是IBM有一篇关于JVM如何在Windows / Linux上使用本机内存的好文章。

答案 1 :(得分:1)

Java在启动时从操作系统分配连续内存。一旦它具有堆所需的内存,它就会控制内存的分配方式。

Java中的内存是连续分配的,因此每个对象很可能按照分配的顺序在内存中出现。 (但这不能保证) 此外,如果对象在次要集合中存活,则可能按照发现对象的顺序复制该对象。 (再次无法保证)

如果您希望随机访问,我个人会使用ArrayList;如果您想插入List的末尾,我会使用LinkedList。

Java执行得非常糟糕,任何一个都被交换到磁盘。我建议确保它足够小,以便随时适应内存。它的缓存行为不容易控制,你可以做的最好的事情是试验JVM如何优化你的代码及其缓存行为。