记一次OOM排查优化问题

本文记录了一次Java OutOfMemory (OOM) 问题的排查与优化过程,包括理解JVM内存分配、如何在出现OOM时获取内存使用记录、使用jmap和jvisualvm分析内存 dump 文件,以及发现并优化了一个因频繁创建空字符串对象导致的内存浪费问题。作者计划进一步复习JVM内存模型。
摘要由CSDN通过智能技术生成

一、OOM简介

以下为转载的一些知识点,这边主要是记录以下排查过程
1.jvm内存分配不够,电脑内存的大小,不等于java程序能够使用的内存大小。jvm分配的内存大小,可以在JVM启动时,通过配置文件配置。
2.内存利用不当,有两个表现,内存泄漏和内存溢出。

内存泄漏:对象使用完毕后,不能够及时销毁,变成内存垃圾,如果不能够及时清理,内存垃圾越来越多,可用内存越来越少,影响程序的健康运行。虽然java提供GC机制,可以自动进行内存回收,但是逻辑错误,可能导致垃圾堆积过多。如,将太多的局部作用的对象保存为全局对象。
内存溢出:请求分配的内存,比jvm剩余可用内存少,导致程序不能够正确运行,导致崩坏。

二、排查准备

初步计划就是在oom的时候拿到内存的使用记录,然后用工具进行图表分析(图标更直观)
1、在JVM添加参数

-XX:+HeapDumpOnOutOfMemoryError
表示当JVM发生OOM时,自动生成DUMP文件
-XX:HeapDumpPath=/tmp/oom
DUMP文件存放的位置

如果平时想生成dump文件查看一下内存使用情况的话,可以用下面这句话:

jmap -dump:live,format=b,file=myjmapfile.txt 19570

19570是PID&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值