哪个更贵,贵多少:
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/