List和Enumeration之间的区别

时间:2010-04-09 04:43:56

标签: java

我有一个写一个方法来获取所有记录并返回List Type, 但我得到内存不足错误。 所以我将返回类型从List更改为Enumeration,在方法中,而不是ArrayList,使用Vector并在方法的末尾返回vector.elements。 它没有任何错误。但我不明白为什么。

有人可以解释为什么这个枚举有效吗?

2 个答案:

答案 0 :(得分:5)

EnumerationIterator的“旧版本” VectorArrayList的“旧版本”。

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

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

答案 1 :(得分:0)

你必须修复别的东西。如果任何更多内存而不是ArrayList,Vector将使用,并且返回枚举而不是列表本身只会增加更多的内存使用量,除非您的调用者使用列表迭代器,在这种情况下它是线球。这种策略当然没有理由使用显着的 less 内存。

除非您返回原始列表的副本?作为一个新的ArrayList?这至少会在制作副本时将内存使用量增加一倍,但它必须是一个非常长的列表......