专栏中心

EEPW首页 > 专栏 > Java视频教程之Java程序在什么情形下会挂掉

Java视频教程之Java程序在什么情形下会挂掉

发布人:扣丁学习 时间:2020-11-27 来源:工程师 发布文章

  小编想问一下大家知不知道Java程序在什么情形下会挂掉?有哪些小伙伴曾经碰到过Java程序挂掉的情况?本篇文章扣丁学堂Java培训机构小编就和读者们一块来看一下这个问题。

  在本例中,先初始化了一个map,然后用一个无限循环将一些键值对插入到map里面:


  classWrapper{


  publicstaticvoidmain(Stringargs[])throwsException{


  Mapmap=System.getProperties();


  Randomr=newRandom();


  while(true){


  map.put(r.nextInt(),"value");


  }


  }


  }


  你可能也猜到了,这段代码编译执行后无法正常结束。当我用这组参数启动的话:


  java-Xmx100m-XX:+UseParallelGCWrapper


  我会在终端中看到java.lang.OutOfMemoryError:GCoverheadlimitexceeded的异常信息。不过如果我调整一下堆大小或者是GC的类型的话,在我的MacOSX10.9.2系统上用OracleHotspotJDK1.7.0_45来运行,就会出现不同的情况。


  比如说,我用一个较小的堆来运行这个程序,就像下面这样:


  java-Xmx10m-XX:+UseParallelGCWrapper


  应用程序会抛出一段大家更熟悉的错误信息然后挂掉:java.lang.OutOfMemoryError:Javaheapspace。


  如果你换成ParallelGC以外的GC策略的话,比如说-XX:+UseConcMarkSweepGCor-XX:+UseG1GC,你将会看到由默认的异常处理器所抛出的异常,并且你看不到堆栈信息了,因为堆已经没有空间了,甚至连异常的堆栈信息都没法填充了,因此它在创建异常的时候就挂掉了:


  MyPrecious:examplesvladimir$java-Xmx100m-XX:+UseConcMarkSweepGCWrapper


  Exception:java.lang.OutOfMemoryErrorthrownfromtheUncaughtExceptionHandlerinthread"main"


  这说明了什么?当资源紧缺的时候,你根本没法判断你的应用程序是怎么挂掉的,因此不要指望能出现你所预期的一系列错误提示。从上面这个例子中可以看到,你的程序可能会以三种完全不同的方式挂掉:


  GC的安全性检查失败:一旦GC花费的时间占到98%以上的话,JVM就会宣告投降了:java.lang.OutOfMemoryError:GCoverheadlimitexceeded。


  无法为下一个操作分配足够的内存:如果无法满足下一条指令所需要分配的内存的话,你会收到一条”java.lang.OutOfMemoryError:Javaheapspace”的错误信息。


  你可能也总结出来了,还有一种情况是你的内存已经紧张到连JVM创建一条OutOfMemoryError异常,填充堆栈信息,打印到屏幕上这点要求都满足不了了。这种情况UncaughtExceptionHandler会捕获到这个错误,而不再走通常的错误流程。这个处理器恰如其名,当线程由于某个异常快要挂掉的时候,它开始出来收场了。出现这种情况的话,JVM会找到线程对应的UncaughtExceptionHandler,然后调用它的uncaughtException方法。


  好了,Java程序在什么情形下会挂掉相信大家已经有所了解了,想要了解Java方面更多信息的话可以登录扣丁学堂官网了解,扣丁学堂不仅有专业的老师和与时俱进的课程体系,还有大量的Java视频教程供学员观看学习哦,想要观看Java视频教程的小伙伴快快登录扣丁学堂吧。扣丁学堂Java技术交流群:850353792。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

手机原理第二章(1)

手机原理第四章

优必选天工行者人形机器人订单破百,年内交付预计超300台

AOS将出售中国合资企业 20.3% 的股份

LabVIEW 8.5在各行业的应用集锦

视频 2009-03-24

英特尔积极行动:据报道,诺瓦湖在台积电的 2 纳米工艺上量产,18A 良率提升速度加快

EDA/PCB 2025-07-14

斯坦福大学:聊天机器人违背了治疗最佳实践

汉格斯特过滤集团收购中国空气过滤专家奇昇净化科技

LG电子将通过混合键合进入半导体设备市场

手机原理第一章

LabVIEW 循环定时之谜

视频 2009-03-24

贸泽与Qorvo发布电子书 探讨电机控制的挑战与解决方案

纳芯微推出车规级带米勒钳位功能的隔离半桥驱动NSI6602MxEx系列

手机原理第二章(2)

2025 年,麦当劳 McHire 机器人因使用\'123456\'作为密码,泄露了 6400 万人的个人信息

LabVIEW 运行性能之谜

视频 2009-03-24

桥梁健康检测系统视频演示

PXI Express混合信号仪器视频教程

视频 2009-03-24

手机原理第三章

英特尔将俄勒冈裁员增至2400人;据报道,全国将裁员4000人,7月中旬完成

消费电子 2025-07-14
更多 培训课堂
更多 焦点
更多 视频

技术专区