路漫漫其修远兮,吾将上下而求索。想要更快,就要深入挖掘JAVA基础的数据结构,从来分析出所编写的JAVA代码为什么把内存耗尽,思考有什么办法可以节省内存呢?啊哈!算法。这里采用了BitMap思想。
首先来看一个实验:
指定VM参数大小:-Xms256m -Xmx512m
import java.util.TreeSet;
public class Test {
public static void main(String[] args) {
TreeSet set = new TreeSet();
for(long i=10000000000L;i<900000000000L;i++){
set.add(i);
System.out.println("i="+i);
}
}
}
一个简单的FOR循环,运行该类,可以看到当输出:i=10011703526的时候报错了
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
如果把上面的例子中的 set.add(i);修改成set.add(i+""); 那结果又是什么呢?
当输出i=10005851762时报了同样的错,内存溢出。为什么往内存里放Long型的比String型的多了近一半的数据呢?
1024 个字节 =1KB , 1024KB=1MB , 102