java线上服务器jvm内存泄漏的一次踩坑(OutOfMemoryError)

news/2024/7/16 7:49:03 标签: 内存泄漏, OutOfMemory

 前几天线上一台游戏服务器发生内存泄漏,cpu彪的很高,老板的脾气像cpu一样,是不是过来询问问题排查怎么样了。。。

因为线上服务器启动的时候,加了- XX:+ HeapDumpOnOutOfMemoryError ,发现服务器项目目录下多一个hprof文件,这就是重要的线索,然后解析xxx.hprof这个文件,方法很多,

(1)、可以使用JHAT,这是JDK默认提供的Java堆分析工具,jhat -port 1123 -J-Xmx4G dump.hprof 

(2)、可以使用第三方工具,Eclipse Analyzer 性能分析工具

(3)、这里我使用的jprofier 工具打开java_pidxxx.hprof

    可以看到的信息是这2列:

                               

 

然后再Thread Dump 中发现了异常;

看到那个闪电标识了吗⚡,这就是问题发生的瞬间的一个快照dump时刻的记录,找到问题了,是并发导致的内存泄漏

一个map.一个线程往里面put,一个线程在使用map:

Collection<V> valueCollection =Map.get(outRankType).values();
List<V> valueList = new ArrayList<>(valueCollection);

new ArrayList<>(valueCollection) 和map.put并发问题导致内存泄漏,其实就是 new ArrayList<>(valueCollection)里面并发导致了死循环,这2个线程也就蹦了,这2个线程处于阻塞状态,导致任务处理不了。

写代码的人找不到了,但是锅还是得背啊,老板只看结果,haha。。。后面又加了报警机制,,,,


http://www.niftyadmin.cn/n/1621132.html

相关文章

游戏服务器生成全局唯一ID的几种方法

在服务器系统开发时&#xff0c;为了适应数据大并发的请求&#xff0c;我们往往需要对数据进行异步存储&#xff0c;特别是在做分布式系统时&#xff0c;这个时候就不能等待插入数据库返回了取自动id了&#xff0c;而是需要在插入数据库之前生成一个全局的唯一id&#xff0c;使…

一个小白的测试环境docker化之路

本文来自网易云社区 作者&#xff1a;叶子 学习docker搭建测试环境断断续续也有三个多月了&#xff0c;希望记录一下这个过程。常言道&#xff0c;总结过去&#xff0c;展望未来嘛~文章浅显&#xff0c;还望各位大神路过轻拍。 按照国际惯例&#xff0c;先说一下背景&#xff1…

Linux cpu负载和cpu利用率的区别

在Linux系统中&#xff0c;我们一般使用uptime命令查看&#xff08;w命令和top命令也行&#xff09;。 一、“load average” 含义&#xff1a; "load average"&#xff0c;它的意思是"系统的平均负荷"&#xff0c;里面有三个数字&#xff0c;我们可以从中…

Moby Project

这里写目录标题1. Moby Project1.1. 什么是 Moby Project1. Moby Project https://github.com/moby/mobyhttps://mobyproject.org/projects/ 1.1. 什么是 Moby Project Docker 公司决定将软件产品 “Docker” 和开源项目 “Docker” 区分开来。Moby Project 项目将作为开源项…

React Virtual DOM 理解

React Virtual DOM 一、概念 在react中&#xff0c;对于每个DOM对象都有一个相应的“虚拟DOM对象”&#xff0c;相当于DOM对象的轻量级副本由于是Virtual DOM只是一个副本&#xff0c;具有与真实的DOM对象相同的属性&#xff0c;但是无法直接更改浏览器屏幕上内容的真实功能当直…

一、python 核心语法总结

一、字符串 1、Python的字符串是不可变的&#xff08;immutable&#xff09;。改变一个字符串内部的字符是错误的&#xff0c;不允许的。 2、字符串拼接方式&#xff1a;&#xff08;1&#xff09;、str1 str2 # 表⽰str1 str1 str2&#xff08;2&#xff09;、string.join(…

kubernetes.io

这里写目录标题1. kubernetes.io1.1. 概念1.1.1. DaemonSet1.2. 内置工具1.2.1. kubectl1. kubernetes.io 1.1. 概念 1.1.1. DaemonSet DaemonSet 是一个确保全部或者某些节点上必须运行一个 Pod 的工作负载资源 (守护进程), 当有节点加入集群时, 也会为他们新增一个 Pod。 …

聚能聊每周精选 第十四期

Hello&#xff01; 各位社区小伙伴们&#xff01;好久不见&#xff01;“爱你就像&#xff0c;蓝天白云&#xff0c;晴空万里&#xff0c;突然暴风雨。”接下来&#xff0c;让我们一起回顾一下&#xff0c;本周都有哪些热议的话题&#xff1f;各位聊主与粉丝们又有哪些精彩的互…