java - 将列表带入内存的成本

标签 java list

哪个更贵,贵多少:

List<cards> cardList = getMyList(small);//returns a list of 100 elements
cardList.add(card);

对比

List<cards> cardList = getMyList(big);//returns a list of 100,000 elements
cardList.add(card);

我想我真正的问题是,将一个大列表存入内存是否很昂贵?或者 list 是否足够聪明,只需要达到它需要的大小?添加时小,搜索时大。

最佳答案

嗯,很明显,在内存中获取一个大列表比获取一个小列表更昂贵。 事实上,成本因素取决于对象的大小,并取决于 initial heap size .实际上,当 JVM 没有更多内存时,它会将其堆大小从其 Xms 参数加倍到其 Xmx 参数。

但是,只有当 getMyBigList 方法创建对象时,这才是正确的。如果这些对象已经加载到内存中,此方法只会在内存中加载一个包含 100 000 个引用的列表,这不会花费您超过几 Mb。

在这种情况下,您的限制因素将不是 JVM 的内存分配,而是您用来加载该列表的方法。

它们是从网络加载的吗?带宽就是极限。

它们是从磁性硬盘驱动器加载的吗?带宽就是极限。

关于java - 将列表带入内存的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2425968/

相关文章:

java - 如何查找以特定字母开头的应用程序? - 安卓启动器

c# - 对列表进行排序并根据顺序选择对象

java - 如何在从 xml 解析中选择的微调器上显示/烘烤字符串数组的相关项

java.util.concurrent.CompletionStage - 如何处理异常?

python - 使用嵌套 for 循环更新 dict

java - Java中外连接两个List生成一个新List

python - 在 Python 中,为什么我的 for 循环只在特定数字之前的数字是数组中的最后一个时才排除该数字?

java - 误解了java中的泛型

java - BufferedReader,读取编辑文本中的字符给出奇怪的字符

java - 为什么我遇到 java.util.InputMismatchException 问题?