请问下列java代码为什么可以让jvm崩溃?请详细解释,比如它是怎么让垃圾收集机制失效的等等。。。

[复制链接]
查看11 | 回复5 | 2012-3-14 10:22:30 | 显示全部楼层 |阅读模式
jvm判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,当有一个地方引用它,计数器加1,当引用失效,计数器减1,任何时刻计数器为0的对象就是不可能再被使用的。 但它无法解决对象循环引用的问题。举个简单的例子:对象A和B分别有字段b、a,令A.b=B和B.a=A,除此之外这2个对象再无任何引用,那实际上这2个对象已经不可能再被访问,但是gc却无法回收他们。...
回复

使用道具 举报

千问 | 2012-3-14 10:22:30 | 显示全部楼层
Exception in thread "main" java.lang.OutOfMemoryError: Java heap spaceat com.stanley.testCrash.Crash.main(Crash.java:8)java.lang.OutOfMemoryError异常发生的原因常见的有以下几种:1.内存中加...
回复

使用道具 举报

千问 | 2012-3-14 10:22:30 | 显示全部楼层
他的底层就存在抛出异常机制,就算他不知道什么异常,他也会抛出一个Exception的基类,所以他很安全...
回复

使用道具 举报

千问 | 2012-3-14 10:22:30 | 显示全部楼层
死循环啊,条件永远为真,o = new Object[] { o }; 是创建了一个实力对象,也就是给o分配了内存地址,不停地分配内存地址导致内存耗完了...
回复

使用道具 举报

千问 | 2012-3-14 10:22:30 | 显示全部楼层
死循环, 把JVM 内存耗费完了。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行