JAVA的堆栈和内存、垃圾回收解说(二)

2014-11-24 03:00:37 · 作者: · 浏览: 4
ln("循环次数:" + count); System.out.println("字符串循环后的大小为:" + sb.length() / 1024 / 1024 + "m-=-=-=" + sb.length() + "byte"); System.out.println("循环前虚拟机已占内存:" + Runtime.getRuntime().totalMemory()/ 1024 / 1024 + "m====" + Runtime.getRuntime().totalMemory()+ "byte"); System.out.println("遇到错误:" + e); break; } } /* * 运行结果: * 当前虚拟机的最大内存:793m------832438272byte 循环前虚拟机已占内存:127m====133234688byte 循环次数:23 字符串循环后的大小为:112m-=-=-=117440512byte 循环前虚拟机已占内存:539m====566108160byte 遇到错误:java.lang.OutOfMemoryError: Java heap space */ } }

分析:以上两个程序用来说明String和StringBuffer两个占用内存的情况;其他资料上面介绍这两个类的使用的时候得出的结果是:Stringbuffer比String循环后得到的字符串字节大;而我在这测试的时候得到结果两个类得到的字符串大小是一样的,区别是耗费的额虚拟机的内存大小不一样,后者明显的比前者小。

注:安装完jdk之后jvm默认的大小是63m,上面我测试的时候是将jvm的配置文件的xmx大小调大之后的。