Java进程OutOfMemoryError与catch Throwable
2012-08-10 15:55
134 查看
如果java进程发生OOM, 代码是否可以catch住这个异常?
答案是可以的. 测试代码如下:
使用
运行程序结果如下:
可以得出的结论是:
OutOfMemoryError 可以被catch住, 使用catch Error或者直接catch Throwable
其他的线程,如果不在极限情况下分配内存, 仍然可以继续运行.
catch Throwable 的使用要小心
--EOF--
答案是可以的. 测试代码如下:
public class TestOOM{ public static void main(String[] args) throws Exception{ int ten_mb = 1024 * 1024 * 10; int count = 10; new Thread(){ public void run(){ int count = 10; while(count -- > 0){ System.out.println("i'm running"); try{ Thread.sleep(100); }catch(Throwable e){ } } } }.start(); while(count -- > 0){ try{ byte[] content = new byte[ten_mb]; }catch(Throwable e){ e.printStackTrace(); }finally{ System.out.println("count down: " + count); Thread.sleep(1000); } } } }
使用
java -Xms8m TestOOM
运行程序结果如下:
HaitaoYao-MacPro:tmp haitao$ java -Xmx10m TestOOM i'm runningjava.lang.OutOfMemoryError: Java heap space at TestOOM.main(TestOOM.java:24) count down: 9 i'm running java.lang.OutOfMemoryError: Java heap space at TestOOM.main(TestOOM.java:24) count down: 8 i'm running java.lang.OutOfMemoryError: Java heap space at TestOOM.main(TestOOM.java:24) count down: 7 i'm running java.lang.OutOfMemoryError: Java heap space at TestOOM.main(TestOOM.java:24) count down: 6 i'm running java.lang.OutOfMemoryError: Java heap space count down: 5 i'm running java.lang.OutOfMemoryError: Java heap space count down: 4 i'm running java.lang.OutOfMemoryError: Java heap space count down: 3 i'm running java.lang.OutOfMemoryError: Java heap space count down: 2 i'm running i'm running java.lang.OutOfMemoryError: Java heap space count down: 1 java.lang.OutOfMemoryError: Java heap space count down: 0
可以得出的结论是:
OutOfMemoryError 可以被catch住, 使用catch Error或者直接catch Throwable
其他的线程,如果不在极限情况下分配内存, 仍然可以继续运行.
catch Throwable 的使用要小心
--EOF--
相关文章推荐
- Wily EM Server进程异常终止,日志记录java.lang.OutOfMemoryError
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- java.lang.OutOfMemoryError: Java heap space
- Exception in thread "http-bio-8080-exec-8" java.lang.OutOfMemoryError: PermGen space
- java项目部署到linux系统上出现java.lang.OutOfMemoryError: PermGen space错误
- 如何解决OutOfMemoryError: Java heap space
- IDEA中Tomcat启动报:java.lang.OutOfMemoryError: PermGen space异常
- Android解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget
- 在eclipse中的tomcat中出现报错 Java.lang.OutOfMemoryError: PermGen space
- 解决Eclipse运行Jboss出现java.lang.OutOfMemoryError:PermGen space
- 遇java.lang.OutOfMemoryError: PermGen space之解决方案
- java.lang.OutOfMemoryError: PermGen space
- java.lang.OutOfMemoryError: PermGen space
- java.lang.OutOfMemoryError: GC overhead limit exceeded
- MyEclipse-java读取jxl的时候报错OutOfMemoryError
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- java.lang.OutOfMemoryError异常解决方法
- ECLIPSE java.lang.OutOfMemoryError: PermGen space 错误
- 异常处理 java.lang.OutOfMemoryError: PermGen space
- Tomcat Java.OutOfMemoryError : PermGen Space异常