【问题标题】:How does Java VM allocate memory?Java VM 是如何分配内存的?
【发布时间】:2011-03-06 19:12:46
【问题描述】:

我想知道 Java VM 是如何分配内存的? JAVA在我们计算机的物理内存中分配内存吗? 现在我正在尝试比较两个数据结构,链表和数组,注意页面错误和缓存命中/未命中,以查看每个数据结构在非常低级别(硬盘、内存、缓存级别)的性能

【问题讨论】:

    标签: java arrays memory jvm linked-list


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      Java 中的内存是连续分配的,因此每个对象很可能会按照分配的顺序出现在内存中。 (但这不能保证) 此外,如果对象在次要集合中幸存下来,则很可能会按照对象被发现的顺序被复制。 (同样不保证)

      如果您希望随机访问,我个人会使用 ArrayList,如果您想插入到列表末尾以外的任何位置,我会使用 LinkedList。

      Java 的性能非常糟糕,因为它被交换到磁盘。我建议确保它足够小以随时放入内存中。它的缓存行为不容易控制,您可以做的最好的事情是试验 JVM 如何优化您的代码及其缓存行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-05
        • 1970-01-01
        • 2021-06-02
        相关资源
        最近更新 更多