二十、Java内存泄漏概念、造成原因及检测方式(全)


一、Java内存泄漏概念、造成原因及检测方式(全)

Java内存泄漏概念、造成原因及检测方式(全)

二、其他

1.jmap命令

jmap -dump:format=b,file=C:\users\Administrator\Desktop\my123.hprof 30460

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.java VisualVM查看.hprof文件

java VisualVM查看.hprof文件

刚打开插件,插件可能没法用
在这里插入图片描述
点下最新版本,会报无法连接,说明插件地址配的有问题
在这里插入图片描述
怎么解决:
在这里插入图片描述
打开网址: visualvm官网
visualvm对应的jdk版本
找到自己安装的JDK 命令:java -version
在这里插入图片描述
java version “1.8.0_211”
Java™ SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot™ 64-Bit Server VM (build 25.211-b12, mixed mode)java version “1.8.0_211”
Java™ SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot™ 64-Bit Server VM (build 25.211-b12, mixed mode)

在这里插入图片描述
点进去复制上面的
在这里插入图片描述
粘贴过来
在这里插入图片描述
回到可用插件 安装 visual GC
在这里插入图片描述
安装完关了重启
在这里插入图片描述

JVM中的幸存者区、新生代、老年代、元空间、压缩类空间分别是概念,有什么实际的作用,什么情况应该警惕?

  1. 新生代(Young Generation):
  • 概念:新生代是大多数新创建的对象首先分配的地方。它被分为三部分:Eden区和两个Survivor区(S0和S1)。

  • 作用:新生代的主要目的是为了快速分配和回收短期对象。大多数对象在创建后很快就不再使用,所以它们在新生代中被分配和回收。这种快速的分配和回收策略可以减少内存碎片,提高内存利用率。

  • 警惕:如果新生代的大小设置得太小,会导致对象频繁地被复制到Survivor区或者提升到老年代,触发更多的Minor GC。如果Minor GC的频率非常高,并且每次GC的耗时也很长,那就需要考虑增大新生代的大小。

  1. 幸存者区(Survivor Spaces):
  • 概念:幸存者区是新生代的一部分,用于存放在Minor GC中幸存下来的对象。幸存者区有两个:S0和S1。在Minor GC之后,Eden区和一个Survivor区的存活对象会被复制到另一个Survivor区。

  • 作用:Survivor区的主要目的是为了减少对象直接进入老年代的机会。通过在Survivor区之间复制对象,JVM可以识别出那些经历了多次GC仍然存活的对象,然后将其提升到老年代。

  • 警惕:如果Survivor区的大小设置得太小,会导致对象在Survivor区之间频繁地复制,增加GC的开销。同时,也会使更多的对象直接进入老年代,加速老年代的填满。

  1. 老年代(Old Generation):
  • 概念:老年代是用于存放长期存活的对象的地方。通常,一个对象如果在新生代中经历了若干次Minor GC仍然存活,就会被提升到老年代。

  • 作用:老年代的主要目的是为了存放长期存活的对象,减少Full GC的频率。因为老年代的对象通常比较稳定,所以Full GC的频率相对Minor GC要低得多。

  • 警惕:如果老年代被填满,就会触发Full GC。频繁的Full GC会严重影响应用的性能,因为Full GC的暂停时间通常比Minor GC长得多。如果老年代的使用量持续增长,并频繁触发Full GC,那就需要考虑增大老年代的大小,或者检查是否存在内存泄漏。

  1. 元空间(Metaspace):
  • 概念:元空间是用于存储类的元数据的地方,如类的名称、字段、方法等。在Java 8之前,这部分数据被存储在永久代(PermGen)中。

  • 作用:元空间的主要目的是为了存储类的元数据,支持类的加载和卸载。与永久代不同,元空间可以自动扩展其大小。

  • 警惕:虽然元空间可以自动扩展,但如果元空间的使用量持续增长,最终也会耗尽所有可用空间,导致OutOfMemoryError: Metaspace错误。这通常表示存在类加载泄漏,即某些类加载器不断地加载新的类,但从未卸载它们。

  1. 压缩类空间(Compressed Class Space):
  • 概念:压缩类空间是元空间的一部分,用于存储压缩后的类数据。这是为了节省内存空间,特别是在64位系统上。

  • 作用:压缩类空间的主要目的是为了减少类元数据的内存占用。通过将类数据压缩为32位的指针,JVM可以在64位系统上节省大量的内存。

  • 警惕:压缩类空间的大小是固定的,默认为1GB。如果压缩类空间被耗尽,JVM将无法加载新的类,并抛出OutOfMemoryError: Compressed class space错误。这通常表示应用加载了大量的类,超出了压缩类空间的容量。

理解这些概念及其作用对于优化Java应用的性能至关重要。建议你密切监控这些内存区域的使用情况,特别是老年代和元空间。频繁的Full GC,或者元空间的持续增长,通常是潜在问题的红色警报。同时,也要注意新生代和Survivor区的大小设置。过小的新生代或Survivor区会导致更频繁的GC,而过大的新生代又可能延迟对象的提升,增加Full GC的频率。

Jmap+MAT 排查内存泄漏
言程序
01-25 5065
最近在项目中自测的时候(压力测试)遇到内存泄漏的情况,想查看具体是哪个模块甚至哪个类引起的问题,经同事推荐使用Jmap+MAT的组合进行了一次尝试,下面记录一下,以便今后深入学习使用。 这里可以用一个linux下的命令(jps)查看所有Java相关线程的pid等信息。 然后使用jmap命令,jmap是一个可以
java中如何查看内存泄露
weixin_43852903的博客
05-11 3436
1 准备工作 首先你的电脑上得有软件查看内存泄露,我们使用notepad++,(记事本打开格式不对~)在此推荐一个微信公众号:软件安装管家,就可以轻松安装该软件啦~ 2 程序休眠、打断点(便于观察) 以下程序以单链表为例: public static void main(String[] args) throws InterruptedException { M...
Java JVM内存分析工具 jmap
小楼一夜听春雨,深巷明朝卖杏花
07-29 4408
jmapJava Virtual Machine Memory Map)是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具。除此以外,jmap命令还可以查看finalize执行队列、Java堆和方法区的详细信息,比如空间使用率、当前使用的什么垃圾回收器、分代情况等等。参数:-dump 生成程序的内存转储快照,用法:-dump: [live,] format = b, file = {fileName}
java bufferedreader读大文件会内存溢出吗_分享一次 Java 内存泄漏的排查
weixin_39636645的博客
11-22 559
由来问题解决排查小结《Netty 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spring Boot 实现原理与源码解析 —— 精品合集》《数据库实体设计合集》《Java 面试题 —— 精品合集》《Java 学习指南 —— 精品合集》由来前...
消除内存泄漏
weixin_30752699的博客
10-15 524
http://dev2dev.bea.com.cn/techdoc/05092102.html摘要   虽然Java虚拟机(JVM)及其垃圾收集器(garbage collector,GC)负责管理大多数的内存任务,Java软件程序中还是有可能出现内存泄漏。实际上,这在大型项目中是一个常见的问题。避免内存泄漏的第一步是要弄清楚它是如何发生的。本文介绍了编写Java代码的一些常见的内存泄漏陷阱,以...
java内存泄漏查找
x_studying的专栏
08-29 3973
java由于拥有自动垃圾回收机制,所以一般情况下,我们不需要考虑内存泄漏的问题。jvm会自动收回无用的对象。所谓无用的对象,表示你的程序不可能再访问的对象。 但是,有一种情况必须考虑,就是要防止容器(List,Map等)内的对象无限增大。因为对象存贮在容器中,会被容器引用,从而如果容器的有效,容器内的对象就不会释放。 一旦真的出现内存泄漏,随着时间的推移,java程序逐渐增大内存消耗,最后出现
使用jmap分析内存泄漏
猿上生活
09-03 5154
文章目录1.jmap介绍2.MAT3.案例4. 总结 1.jmap介绍 jmapJava Memory Map)是jdk自带的java内存映像工具,使用jmap能够系统运行时的内存信息,同时能够将内存dump下来,分析内存泄露的问题。 这里我们使用它 -dump 选项,将内存信息dump到服务器某个地方,然后传到本地使用内存分析工具MAT进行内存分析。 jmap -dump:live,format=b,file=文件路径/文件名 pid live:就是只dump 活着的对象 format=b 使用
关于java内存泄漏
01-27
#### 二、Java内存泄漏概念 内存泄漏是指程序中已分配的堆内存由于某种原因无法被回收,导致这部分内存不能再次被利用。在Java中,内存泄漏表现为某些对象已经不再被使用,但由于某种原因仍然可以被引用,从而...
Java学习之内存泄漏检测及相关问题
04-09
在"Java内存泄漏检测工具-Android篇.ppt"这个文件中,很可能详细介绍了Android开发中遇到的内存泄漏问题,以及如何利用上述工具进行检测和优化。建议读者下载并查阅该PPT,以获取更具体的操作步骤和实例分析。 总...
java内存泄露、溢出检查方法和工具
06-26
本文将深入探讨如何检测和分析Java内存泄露与溢出,并介绍一种常用的工具——Memory Analyzer(MAT)。 首先,理解内存泄露概念至关重要。在Java中,内存泄露通常发生在对象不再被程序使用但仍然保持在内存中,...
java lambda表达式内存泄露_浅谈Java内存泄露
weixin_34722015的博客
02-27 2218
纳尼,Java 不是自动管理内存吗?怎么可能会出现内存泄泄泄泄泄泄漏!Java 最牛逼的一个特性就是垃圾回收机制,不用像 C++ 需要手动管理内存,所以作为 Java 程序员很幸福,只管 New New New 即可,反正 Java 会自动回收过期的对象。。。那么 Java 都自动管理内存了,那怎么会出现内存泄漏,难道 Jvm 有 bug? 不要急,且听我慢慢道来。。怎么判断可以被回收先了解一下 ...
Java中的内存泄漏及排查方法
最新发布
聚娃科技开发者博客
08-15 1700
大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!内存泄漏是指程序中已经不再使用的对象不能被垃圾回收器回收,导致内存占用不断增加,最终可能导致内存溢出(OutOfMemoryError)。选项卡中,点击生成的堆转储文件,进入分析界面。在“Classes”视图中,查看对象实例数,重点关注大量实例的类。以下是一个详细的内存泄漏排查步骤,通过一个实际的内存泄漏示例展示如何使用。选择可疑类,查看其引用路径,找出导致对象无法被回收的原因。对象,当内存不足时,垃圾回收器可以回收这些对象。
java内存泄漏排查
奶萝卜的博客
08-15 1156
java内存泄漏排查 查看cpu的实时运行情况 输入以下命令 top 输出内容如下 top - 12:42:18 up 17:58, 1 user, load average: 0.02, 0.05, 0.05 Tasks: 210 total, 1 running, 209 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 s
Java内存泄漏排查
laolu1573的专栏
01-03 545
Java内存泄漏排查 1.内存溢出和内存泄露 通俗点说: 内存溢出:申请了10个字节的空间,但是确在这个空间写入11或以上字节的数据,出现溢出。 内存泄漏:new申请了一块内存,后来很长时间都不再使用了(按理应该释放),但是因为一直被某个或某些实例所持有导致 GC 不能回收,也就是该被释放的对象没有释放。 1.1内存溢出(Out Of Memory) 产生该错误的原因主要包括: JVM内存过小...
如何查找java内存泄露
dawuafang
08-12 133
1.去IBM网站下载一个工具:ibm support assistant. 2.下载相关插件。 3.打开个Memory Analyzer ,输入heapdump.20130719.003613.3888.0004.phd 文件的路径。 分析可以得到: 根据图形可以判断出hashmap占用内存比较多,然后hashmap中存储的都是RafResult的对象。 如果对代码比较熟悉的话...
java进程引发的内存泄露问题排查分析
hl_java的专栏
04-27 3804
java进程引发的内存泄露问题排查分析
Java核心实操:内存溢出 实战、内存泄漏实战
架构师尼恩
12-18 2127
实操1:使用JVisualVM分析内存溢出OOM,实操2:使用JVisualVM分析内存泄漏
写文章

热门文章

  • SQLserver 获取当前时间 9243
  • mysql查询数据时自动生成序号 7869
  • 在main.js引入模块时,无法找到模块“”的声明文件 7756
  • mysql中将多行数据合并成一行数据 7061
  • span标签垂直居中显示的正确方法 5071

分类专栏

  • java基础、服务器部署 48篇
  • 公众号学习 4篇
  • 海康、虹软 2篇
  • java基础 14篇
  • java pdf 5篇
  • 项目 7篇
  • spring、sprinboot 16篇
  • vue 34篇
  • 百度地图 3篇
  • mysql 33篇
  • 高并发、性能优化、内存泄漏 4篇
  • nginx 3篇
  • linux 8篇
  • mybatis 7篇
  • redis 5篇
  • 收藏 1篇
  • node 2篇
  • Netty 1篇
  • 达内-学子商城 5篇
  • 人生 2篇
  • idea 9篇
  • android 5篇
  • git 1篇
  • 微信 1篇
  • node.js 1篇
  • jdk配置 2篇
  • echarts 2篇
  • 计算机 1篇
  • jquery 4篇
  • security shiro 1篇
  • 权限 3篇
  • 报错 4篇

最新评论

  • (IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案

    hongselanqing: 太感谢了,写的很好,解决了问题了

  • 转载JSON.parseObject 和 JSON.toJSONString 实例

    CSDN-Ada助手: Vue的演化之路给你什么启发呢?为什么Vue能获得成功?

  • 获取用户的openId和调试微信公众号客户端

    zhou_heng_: 这个不对吧,用这个去发模板消息,直接报错 { "errcode": 40003, "errmsg": "invalid openid rid: 66d67c0c-5fd9827d-2bccc440" }

  • MySQL下载与安装(8.0.20版)教程、服务器远程连接mysql

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)增加除了各种控件外,文章正文的字数;(2)提升标题与正文的相关性;(3)增加条理清晰的目录。

  • ERROR in static/js/xxx.js from UglifyJs Unexpected token name «currentVersion»

    qq_19530039: 感谢,完美解决了

最新文章

  • 微信公众号、支付申请流程
  • 虹软人脸 报错 Can‘t find dependent libraries
  • Java如何读取resources目录下的文件路径(九种代码示例教程)
2024年34篇
2023年36篇
2022年37篇
2021年68篇
2020年73篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家安徽玻璃钢雕塑制造厂家无锡玻璃钢雕塑单价玻璃钢花盆制作材料深圳市丽吉尚玻璃钢雕塑气球商场美陈装饰哪家合适装饰商场美陈研发公司北京商场创意商业美陈风格潮州玻璃钢下棋人物雕塑报价梅州主题玻璃钢雕塑厂家玻璃钢金鱼雕塑常州玻璃钢雕塑人物南京红色玻璃钢花盆赤峰玻璃钢雕塑浦口商场圣诞美陈玻璃钢动物雕塑工厂报价周年庆商场美陈阐述玻璃钢基督教雕塑厂家成都玻璃钢雕塑定做沈阳定制玻璃钢雕塑销售厂家玻璃钢中药卡通雕塑新乡玻璃钢动物雕塑定制厂家温州玻璃钢雕塑优势新式的玻璃钢花盆保定玻璃钢雕塑孔雀2021商场美陈雕塑玻璃钢人物雕塑设计厂家长沙玻璃钢雕塑制作丽江玻璃钢雕塑多少钱一米玻璃钢红军雕塑公司地址玻璃钢雕塑实施方案香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化