我有一个200mb的文件,文件格式如下
每一行是一个间隔为0,1,2,3的整数。
0 1 2 0 1 3 ...
那么,如果我想使用数组将此文件读入内存,使用Vector?还是使用ByteArray?或字符串? 可以估计一下内存的大小,以便我设置合适的java堆大小?足够256mb?
答案 0 :(得分:0)
对于字符串大小x 2 - 字符串为每个字节使用char(可以将虚拟机标志设置为使用字节)
-XX:+UseCompressedStrings Use a byte[] for Strings which can be represented as pure ASCII. (Introduced in Java 6 Update 21 Performance Release)
对于List - 计算多少整数。对于每个整数,它创建一个指向int的指针(4个字节或8个字节依赖于平台 - 您可以设置jvm选项以在64位机器上使用32位地址-XX:+UseCompressedOops
)
整数数x((一个整数的大小)+(指向列表中整数的指针))= 2 *(整数个数)*(一个指针的大小)
ByteBuffer - 与文件相同的大小
最好的解决方案是原始数组 - byte,short或int。它依赖于整数精度。对于byte,你有(int的数量)字节 - 可以小于文件大小。