美文网首页
如何判断在哪里内存溢出

如何判断在哪里内存溢出

作者: 20207 | 来源:发表于2020-03-13 15:47 被阅读0次

1、先判断是否是内存溢出导致的

监控内存的情况

创建内存的MXBean 将内存信息输出 内存运行中的变化

将内存调整为500M,可以看到程序在运行一段时间后,老生代的内存一直在333M没有下降的意思。这种情况一般就是是否有在执行过程中,不断对成员变量塞值,导致内存溢出

第二中方式是用

jstat -gc 12538 5000

即会每5秒一次显示进程号为12538的java进成的GC情况,

显示内容如下图:

用jstat

主要是看 PU:Perm(持久代)目前已使用空间 (字节) ,查看满的情况下是否有回收的操作?

2、判断是那个位置导致的内存溢出

1、之前一次我会查看写的代码成员变量,找的很快。

2、不过这次没有找到,所以我用最笨的办法:我会将代码分为2个部分,先只保留第一部分,没有溢出然后解开第二部分的注释,如果在第二部分这溢出就将第二部分再拆解2个部分,循环往复,如果找到对应的位置最好在前面一步再执行一次确认。这个过程需要细心,耐心。

3、如果经过第二步依旧没能解决内存溢出的问题,那么还有一种可能那就是因为数据需要批量输出,所以你之前测试的内存太小,直接将内存改大一点,让它可以将批量的数据输出,再进行观察。

拓展:

利用jcmd命令:

1、jcmd -l 找pid

2、jcmd pid help 找对应的命令

3、选择 jcmd 7 GC.class_histogram 获取那个class最多

注释对应的类的内容

3、测试

相关文章

  • 如何判断在哪里内存溢出

    1、先判断是否是内存溢出导致的 监控内存的情况 将内存调整为500M,可以看到程序在运行一段时间后,老生代的内存一...

  • 内存溢出和内存泄漏

    1.内存泄漏 2.内存溢出 -如何避免内存泄漏、内存溢出?

  • 内存优化

    内存优化主要是分析内存泄露和内存溢出。将从内存是怎么分配,内存怎么出现泄露和溢出,用工具判断什么情况出现泄露,找出...

  • 垃圾回收器GC

    内存溢出:无法为对象分配到内存内存泄漏:代码问题,一些无用的对象无法被GC回收(数据库连接) 如何判断对象是否已经...

  • 2018-11-26 缓冲区溢出漏洞学习记录

    如何发现漏洞 :• 源码审计• 逆向工程• 模糊测试• 向程序堆栈半随机的数据,根据内存变化判断溢出• 数据生成器...

  • 内存溢出和内存泄露、并行和并发、Minor GC和Full GC

    内存溢出和内存泄露的区别 1、内存溢出 内存溢出指的是程序在申请内存的时候,没有足够大的空间可以分配了。 2、内存...

  • 位数组

    如何判断一个数字是否在海量的数字中出现? 常规做法是把海量数字存放到HashMap中,但这会造成内存溢出。位数组就...

  • OOM

    概念 内存溢出 - VM在分配内存时内存不足导致内存溢出 内存泄漏 - 有对象在释放时没有完全...

  • Android内存如何泄露

    Android内存如何泄露 对象的生命周期溢出 对象无限创建引起内存爆满 生命周期溢出 内存泄露说到底是,对象的生...

  • 什么叫内存溢出?内存泄漏的定义又是什么?使用中如何避免?

    有时候会有人问你, 内存泄漏是什么? 什么原因导致的? 如何解决? 那么内存溢出又是什么呢? 内存溢出 out o...

网友评论

      本文标题:如何判断在哪里内存溢出

      本文链接:https://www.haomeiwen.com/subject/quvyjhtx.html