所谓的内存调优,其实调的就是jvm的堆内存,如果栈内存溢出了那么就是你的代码有问题了,基本就是方法递归调用导致不断的压栈导致栈内存溢出(StackOverflowError)了。
下面还是说说堆内存调优几个简单的参数以及eclipse的设置
- -Xms8m //初始化堆的内存大小(此处设置的是8MB)
- -Xmx8m //最大堆内存大小,超过这个值的时候会报OutOfMemoryError(此处设置的是8MB)
- -XX:+PrintGCDetails //打印jvm gc的详细日志
- -Xloggc:D:\log\gc.log //将jvm gc日志输出到gc.log文件中,不设置此参数就在控制台直接输出
- -XX:+HeapDumpOnOutOfMemoryError //当jvm抛出oom时,将堆内存快照dump下来,默认在项目的根路径下面
- -XX:HeapDumpPath=D:\log\gc.hprof //设置堆内存快照文件的路径,不设置默认输出在项目的根路径下面
-Xms8m -Xmx8m -XX:+PrintGCDetails -Xloggc:D:\log\gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\log\gc.hprof