我有一个写一个方法来获取所有记录并返回List Type, 但我得到内存不足错误。 所以我将返回类型从List更改为Enumeration,在方法中,而不是ArrayList,使用Vector并在方法的末尾返回vector.elements。 它没有任何错误。但我不明白为什么。
有人可以解释为什么这个枚举有效吗?
答案 0 :(得分:5)
Enumeration
是Iterator
的“旧版本”
Vector
是ArrayList
的“旧版本”。
记忆差异不应该是显着的,所以你观察到的波动可能是由于另一件事。
根据列表的大小,您可能需要增加JVM的最大内存(使用Xmx
,Xms
和/或XX:MaxPermSize
)
答案 1 :(得分:0)
你必须修复别的东西。如果任何更多内存而不是ArrayList,Vector将使用,并且返回枚举而不是列表本身只会增加更多的内存使用量,除非您的调用者使用列表迭代器,在这种情况下它是线球。这种策略当然没有理由使用显着的 less 内存。
除非您返回原始列表的副本?作为一个新的ArrayList?这至少会在制作副本时将内存使用量增加一倍,但它必须是一个非常长的列表......