记一次 以为 JVM 内存泄露问题

一、需求

主要需求是当查询一段时间的数据的时候,如果数据库没有这些数据,自动生成小时的数据,将数据插入数据库然后拿出来聚合查询,返回给前段。

二、内存溢出现象

当每次查询的时候,可见堆内存一次一次变高,并没有被回收的迹象,而我的Idea 已经卡死不动了
记一次 以为 JVM 内存泄露问题_第1张图片
当我手动执行一次Gc的时候,内存使用量就下来了
记一次 以为 JVM 内存泄露问题_第2张图片
然后我不手动gc 挡eden 区满了 观察现象
记一次 以为 JVM 内存泄露问题_第3张图片
当eden 区满了的时候 系统自动进行了 gc 这样时候eden 区内存就下来了

三、原理

java 的内存机制是 小对象一般都是直接进 eden 区,当eden 区满了的时候 进行一次 minor 将存活的对象放进 service区里面 ,所以上面这个应该是正常现象,但是不明白为啥我的idea 卡死不动了,我电脑存储16 g的 应该不会出现这样的情况才对,当我手动gc一次之后。无论后面内存多高 我的idea 都不会卡死了。

你可能感兴趣的:(记录,java)