
多线程
英雄史诗
这个作者很懒,什么都没留下…
展开
-
OOM不会导致JVM退出
一次生产事故,由于一次性从数据库查询过多数据导致线程 OOM:Java heap space 异常(千万级表,JVM堆内存2G),但是在线程OOM发生时,java进程却没有立即挂掉。##OOM与异常堆内存不够与异常的关系线程发生OOM Java heap space,首先是堆空间不够了,然后再由jvm在申请分配空间的方法调用上抛出OOM异常。对于线程,它会像处理普通异常一样,处理OutOfMemoryError。原创 2024-05-22 00:45:14 · 519 阅读 · 0 评论 -
Volatile不能保证线程安全
volatile是什么? 标记变量是“易变的”,要求线程使用变量时,必须直接从主存获取;线程修改完毕后,必须保证一气呵成的写回主存。 volatile为什么? 需要先了解java内存模型。 在主内存与线程之间,为了提高速度,又多了工作内存。工作内存与主内存的关系,类似电脑内存与硬盘的关系,缓存数据,提高速度,但可能存在不一致问题。 volatile希望在一定程度上保证一致性。 但在并发的3大特征里...原创 2020-04-17 10:12:36 · 895 阅读 · 0 评论