当前位置: 首页 > news >正文

物流那个网站做推广好seo关键词排名优

物流那个网站做推广好,seo关键词排名优,商业空间设计有限公司,营销型网站可以吗问题来源 一次生产事故,由于一次性从数据库查询过多数据导致线程 OOM:Java heap space 异常(千万级表,JVM堆内存2G),但是在线程OOM发生时,java进程却没有立即挂掉。 ##OOM与异常 说到底OutOfM…

问题来源

一次生产事故,由于一次性从数据库查询过多数据导致线程 OOM:Java heap space 异常(千万级表,JVM堆内存2G),但是在线程OOM发生时,java进程却没有立即挂掉。

##OOM与异常
说到底OutOfMemoryError也只是一个java中的异常而已,属于Error一系非检查异常:

ObjectThrowableErrorVirtualMachineErrorOutOfMemoryError

堆内存不够与异常的关系

线程发生OOM Java heap space,首先是堆空间不够了,然后再由jvm在申请分配空间的方法调用上抛出OOM异常。
对于线程,它会像处理普通异常一样,处理OutOfMemoryError。

实例

package org.example;import com.sun.javafx.scene.control.skin.TableHeaderRow;import java.util.ArrayList;//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {public static void main(String[] args) throws InterruptedException{//TIP Press <shortcut actionId="ShowIntentionActions"/> with your caret at the highlighted text// to see how IntelliJ IDEA suggests fixing it.System.out.printf("Hello and welcome!");System.out.println("JVM从OS获取的 最大 内存" + Runtime.getRuntime().maxMemory() / 1024 / 1024 + "M");System.out.println("JVM从OS获取的 当前 内存" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "M");System.out.println("JVM从OS获取的 但空闲 内存" + Runtime.getRuntime().freeMemory() / 1024 / 1024 + "M");// 创建线程new Thread(() -> {ArrayList<byte[]> bytes = new ArrayList<>();for (int i = 0; i < 2000; i++) {byte[] bytes1 = new byte[3 * 1024 * 1024];bytes.add(bytes1);System.out.println(Thread.currentThread().getName()+":JVM从OS获取的 当前 内存" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "M");}}).start();// 创建线程new Thread(() -> {ArrayList<byte[]> bytes = new ArrayList<>();for (int i = 0; i < 2000; i++) {byte[] bytes1 = new byte[3 * 1024 * 1024];bytes.add(bytes1);System.out.println(Thread.currentThread().getName()+":JVM从OS获取的 当前 内存" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "M");}}).start();while (true){System.out.println(Thread.currentThread().getName() + " continuing...");Thread.sleep(1000L);}}
}

结果:

##本机64位,16G内存,默认最大堆3600M
JVM从OS获取的 最大 内存3600M
JVM从OS获取的 当前 内存243M
JVM从OS获取的 但空闲 内存237M
main continuing...##2个线程分别开始创建byte数组,占用内存 
Thread-0:JVM从OS获取的 当前 内存307M
Thread-1:JVM从OS获取的 当前 内存307M
Thread-1:JVM从OS获取的 当前 内存307M
Thread-0:JVM从OS获取的 当前 内存307M##JVM增长到极限,Thread-1先报OOM
Thread-0:JVM从OS获取的 当前 内存3366M
Thread-0:JVM从OS获取的 当前 内存3366M
Exception in thread "Thread-1" java.lang.OutOfMemoryError: Java heap spaceat org.example.Main.lambda$main$1(Main.java:39)at org.example.Main$$Lambda$2/1828972342.run(Unknown Source)at java.lang.Thread.run(Thread.java:750)
Thread-0:JVM从OS获取的 当前 内存3366M
Thread-0:JVM从OS获取的 当前 内存3366M#Thread-1失败终止后,起引用的对象也就可以GC了,Thread-0又获取了好多内存,直到OOM
Thread-0:JVM从OS获取的 当前 内存3616M
Thread-0:JVM从OS获取的 当前 内存3616M
Exception in thread "Thread-0" java.lang.OutOfMemoryError: Java heap spaceat org.example.Main.lambda$main$0(Main.java:29)at org.example.Main$$Lambda$1/1989780873.run(Unknown Source)at java.lang.Thread.run(Thread.java:750)
main continuing...
main continuing...
main continuing...

结论

1、OOM是在线程上发生的,会被当做一般异常处理,不会导致JVM的退出;
2、多线程公用JVM,一个线程终止GC后,内存重新给其他线程分配。

http://www.hkea.cn/news/987675/

相关文章:

  • 坪山网站建设行业现状网页设计与制作代码成品
  • 网站建设需求文档模板下载学大教育一对一收费价格表
  • 小型网站怎样优化百度首页官网
  • 网站开发与iso9001关系百度上做推广怎么做
  • wordpress怎么设置导航镇江seo
  • 番禺建设网站服务软文写作网站
  • 有哪些专做自然风景图片的网站石首seo排名
  • 移动网站虚拟主机seo 排名 优化
  • 专业网站建设课程网站推广优化方式
  • 适合站长做的网站信息流广告投放工作内容
  • 做健身网站步骤网站建设网络公司
  • 武汉整站seo数据上云网站关键词优化怎么做的
  • 网站尾部网络seo推广
  • 建设一个公司网站需要什么知识网站网络推广优化
  • 政府高度重视网站建设怎么做网络推广
  • 自己做的网站是怎么赚钱免费ip地址网站
  • 郑州市政府网站集约化建设计划企业seo排名外包
  • 什么网站可以免费做护师题企业网站管理系统源码
  • 青岛专业餐饮网站制作国内搜索引擎排行榜
  • 域名有哪些seo站长之家
  • 建设网站有哪些关键词制作软件
  • 视频网站怎么制作网店推广的作用是什么
  • 网站栏目怎么做单独的搜索框云南疫情最新消息
  • 独立商城b2c电商网站开发合肥百度seo代理
  • 做购物网站需不需要交税费郑州网站托管
  • 是不是做网站就能赚钱谷歌seo关键词优化
  • 萝岗门户网站建设今日重大新闻头条财经
  • 个人相册网站模板怎么把网站排名排上去
  • 建设外贸网站案例统计站老站长推荐草莓
  • 1688网站的特点全网营销系统