所以我有一个很大的整数列表,我必须使用(大约70Mb)。作为阅读过程的一部分,我需要暂时存储它们。我可以将它们分布在几个IntBuffers上,或者分配几个大型数组。
我无法找到任何关于IntBuffer如何在内存使用方面与数组进行比较的文档(包括java添加的所有元数据)。有谁知道这个?
答案 0 :(得分:2)
相对于70MB的整数,IntBuffer添加的元数据不算什么。但是,分析器会给你一个更完整的答案。
答案 1 :(得分:1)
如果数组很大,就内存使用情况而言,int[]
和堆IntBuffer
或直接IntBuffer
之间的差别很小。 (头顶很小)
在性能方面int[]
是最快的,具有本机字节排序的直接IntBuffer
是第二快的。 IntBuffer的优势在于它的堆积很大,你可以拥有更大的尺寸,例如70 GB而不增加堆大小或完整GC时间。
对于70 MB阵列,它足够小,以至于最简单的解决方案int[]
可能是最好的。 (它也是最容易编写和最有效的运行方式)