JAVA 内存溢出案例汇总
首先,我们创建一个名称为BlowUpJVM的类,之后所有的案例实验都是基于这个类进行。栈不断递归,而且没有处理,所以虚拟机栈就不断深入不断深入,栈深度就这样溢出了。打算把String常量池堆满,没想到失败了,JDK1.7后常量池放到了堆里,也能进行垃圾回收了。然后换种方式,使用cglib,用Class把老年代取堆满虚拟机成功内存溢出了,那JDK动态代理产生的类能不能溢出呢?事实表明,JDK动态代理差生的类不会造成内存溢出,原因是:JDK动态代理产生的类信息,不会放到永久代中,而是放在堆中。不断往堆中塞新增的StringBuffer对象,堆满了就直接溢出了。最后,附上并发编程需要掌握的核心技能知识图,祝大家在学习并发编程时,少走弯路。
用户评论