代码之家  ›  专栏  ›  技术社区  ›  gmhk

列表和枚举之间的区别

  •  4
  • gmhk  · 技术社区  · 14 年前

    我写了一个方法来获取所有记录并返回列表类型, 但我得到了 内存不足 错误。 所以我将返回类型从list改为enumeration,在方法中,不是arraylist,而是在方法的末尾使用vector和returnvector.elements。 它工作正常。但我不明白为什么。

    有人能解释一下为什么这个枚举有效吗?

    2 回复  |  直到 14 年前
        1
  •  0
  •   user207421    14 年前

    你一定修了别的东西。一个向量将使用 更多 内存比arraylist多,返回枚举而不是列表本身只会增加一点点内存使用量,除非调用者使用的是列表迭代器,在这种情况下,它是line ball。毫无疑问,这一策略没有理由被大量使用 较少的 记忆。

    除非你还 复制 原始名单的?作为一个新的阿拉伯主义者?这将使复制时的内存使用量增加一倍,但这必须是一个很长的列表…

        2
  •  5
  •   Bozho    14 年前

    Enumeration 是“旧版本”的 Iterator .
    Vector 是“旧版本”的 ArrayList .

    记忆的差异不应该是显著的,所以也许你观察到的波动是由于另一件事。

    根据列表的大小,您可能需要增加jvm的最大内存(使用 Xmx , Xms 和/或 XX:MaxPermSize )