JVM堆内存溢出后,其他线程能继续工作吗

这篇“JVM堆内存溢出后,其他线程能继续工作吗”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JVM堆内存溢出后,其他线程能继续工作吗”文章吧。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、虚拟主机、营销软件、网站建设、万载网站维护、网站推广。

先说一下答案,答案是还能运行

代码如下:

public class JvmThread {

   public static void main(String[] args) {
       new Thread(() -> {
           List<byte[]> list = new ArrayList<byte[]>();
           while (true) {
               System.out.println(new Date().toString() + Thread.currentThread() + "==");
               byte[] b = new byte[1024 * 1024 * 1];
               list.add(b);
               try {
                   Thread.sleep(1000);
               } catch (Exception e) {
                   e.printStackTrace();
               }
           }
       }).start();

       // 线程二
       new Thread(() -> {
           while (true) {
               System.out.println(new Date().toString() + Thread.currentThread() + "==");
               try {
                   Thread.sleep(1000);
               } catch (Exception e) {
                   e.printStackTrace();
               }
           }
       }).start();
   }
}

结果展示:

Wed Nov 07 14:42:18 CST 2018Thread[Thread-1,5,main]==
Wed Nov 07 14:42:18 CST 2018Thread[Thread-0,5,main]==
Wed Nov 07 14:42:19 CST 2018Thread[Thread-1,5,main]==
Wed Nov 07 14:42:19 CST 2018Thread[Thread-0,5,main]==
Exception in thread "Thread-0" java.lang.OutOfMemoryError: Java heap space
at com.gosaint.util.JvmThread.lambda$main$0(JvmThread.java:21)
at com.gosaint.util.JvmThread$$Lambda$1/521645586.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)
Wed Nov 07 14:42:20 CST 2018Thread[Thread-1,5,main]==
Wed Nov 07 14:42:21 CST 2018Thread[Thread-1,5,main]==
Wed Nov 07 14:42:22 CST 2018Thread[Thread-1,5,main]==

JVM启动参数设置:

JVM堆内存溢出后,其他线程能继续工作吗

上图是JVM堆空间的变化。我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆的数量,突然间急剧下滑!这代表这一点,当一个线程抛出OOM异常后,它所占据的内存资源会全部被释放掉,从而不会影响其他线程的运行!

以上就是关于“JVM堆内存溢出后,其他线程能继续工作吗”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注创新互联行业资讯频道。

文章标题:JVM堆内存溢出后,其他线程能继续工作吗
分享网址:https://www.cdcxhl.com/article16/gipgdg.html

成都网站建设公司_创新互联,为您提供品牌网站设计软件开发微信小程序网站排名品牌网站建设网站导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设