星空网 > 软件开发 > Java

玩坏JVM很简单

JVM内存管理机制下很少发生内存溢出的情况。至少我碰见的少,好像在SSH我多次发布项目时候出现过一次。今天看见一个特简单的方法让内存溢出(好吧,我似乎作死了--!):

1 public class InfiniteRecursion {2   public String toString(){3     return "InfiniteRecursion address : " + this + "\n" ;4   }5   public static void main(String[] args) {6     InfiniteRecursion demo = new InfiniteRecursion() ;7     System.out.println(demo.toString());8   }9 }

上面的代码出现的问题就是toString方法的递归调用,当编译器发现一个字符串**后跟一个加号然后再跟一个对象,它会默认将对象转换成String,方法就是调用对象的toString方法(注:Java对象一定有toString方法),然后这里就无限的递归了。

Exception in thread "main" java.lang.StackOverflowError
    at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:63)
    at java.lang.StringBuilder.<init>(StringBuilder.java:109)
    at test.InfiniteRecursion.toString(InfiniteRecursion.java:6)
    at java.lang.String.valueOf(String.java:2854)
    at java.lang.StringBuilder.append(StringBuilder.java:128)
    at test.InfiniteRecursion.toString(InfiniteRecursion.java:6)

.......

大家有什么奇技淫巧玩坏JVM,来分享一下~~~




原标题:玩坏JVM很简单

关键词:jvm

jvm
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流