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

文章目录

  • 一、Java内存泄漏概念、造成原因及检测方式(全)
  • 二、其他
    • 1.jmap命令
    • 2.java VisualVM查看.hprof文件


一、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的频率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3015506.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

去哪儿前端一面

谈谈你对mvvm的理解 MVVM分为三个部分:分别是M(Model,模型层 ),V(View,视图层),VM(ViewModel,V与M连接的桥梁,也可以看作为控制器) 1、 M:模型层,主要负责业务数据相关; 2、 V:视图层,顾名思义,负视图相关,细分下来就是html+css层; 3、 VM:V与M沟通的…

Rust 解决循环引用

导航 循环引用一、现象二、解决 循环引用 循环引用出现的一个场景就是你指向我,我指向你,导致程序崩溃 解决方式可以通过弱指针,而Rust中的弱指针就是Weak 在Rc中,可以实现,对一个变量,持有多个不可变引…

极致视觉盛宴,尽在Extreme Picture Finder!

在信息爆炸的时代,网络图片如同繁星点点,为我们的生活增添无尽的色彩。然而,如何在浩渺的网海中快速、准确地找到心仪的图片,却成了许多人的难题。此刻,Extreme Picture Finder如同一位贴心的向导,引领我们…

[一本Java+一本Java]5月7日简历指导直播

一、直播预告 每周二、四、六16:30简历指导直播,前美团项目负责人、校招VIP CEO-大拿老师在线讲简历优化 二、简历内容 三、简历核心问题 【简历1】一本- Java 1 虽然项目名称有一定的包装,两个项目的内容都是一眼能看出来的烂大街的项目&#xff0c…

AIP美国物理联合会文献在家如何查看下载

AIP(美国物理联合会,American Institute of Physics)成立于1931年,其主要任务是物理知识和应用的推广普及,也是世界上居于领导地位的物理期刊出版社之一。主要的研究方向为物理学和天文物理学。 今天有位同学求助一篇…

呆滞物料规范管理了,问题就好办了

对于制造企业来说,库存是生存和发展的重要保障,过高的库存会占用企业大量的资金和管理成本,影响企业的正常生产,然而多数中小制造企业还在用人工干预管理,如何控制呆滞物料成为仓储管理的一大难题。 什么是呆滞料 呆滞…

#LLM入门 | langchain | RAG # 4.3_文档分割

上一章讨论了文档标准化加载,现在转向文档的细分,这虽简单却对后续工作有重大影响。 一、为什么要进行文档分割 模型大小和内存限制:大型GPT模型参数众多,需大量计算和内存,而硬件设备如GPU或TPU有内存限制&#xff…

Linux下GraspNet复现流程

Linux,Ubuntu中GraspNet复现流程 文章目录 Linux,Ubuntu中GraspNet复现流程1.安装cuda和cudnn2.安装pytorch3.编译graspnetAPIReference 🚀非常重要的环境配置🚀 ubuntu 20.04cuda 11.0.1cudnn v8.9.7python 3.8.19pytorch 1.7.0…

花园牛奶:从靠谱奶牛到新鲜牛奶的匠心之旅

在花园乳业有限公司,我们深知生产出优质牛奶的秘诀——从靠谱的奶牛开始。为此,我们特意引进了品质卓越的荷斯坦奶牛,它们以“黑白花”的优雅身姿,成为了我们牧场上的明星。荷斯坦奶牛以其出色的生产性能和高产奶量而著称&#xf…

CoPilot 产品体验:提升 OpenNJet 的控制管理和服务提供能力

文章目录 前言系统架构介绍CoPilot 配置CoPilot 插件规范 体验 CoPilot 实例CoPilot: Broker 实例CoPilot: Ctrl 实例 开发其他语言编写的 CoPilot目标主要思路具体实现执行 go 程序代码 功能扩展总结 前言 CoPilot 是 OpenNJet 的一个重要组成部分,它在 Master-Wo…

机器学习之基于Python多种混合模型的糖尿病预测

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 糖尿病是一种慢性代谢性疾病,其发病率在全球范围内逐年上升,已成为影响人类健…

xmind的13个快捷方式

1.新建导图 CtrlshiftN 2.编辑文字 空格键 3.插入图片 Ctrli 4. 插入主题 Enter键 5. 插入主题之前 ShiftEnter键 6. 插入子主题 Tab键 7. 放大导图 “Ctrl”“” 8. 缩小导图 “Ctrl”“-” 9. 复制 CtrlInsert 10. 粘贴 Shift Insert 11. 剪切 ShiftDelete 12. 截图 F7 13. 保…

【论文阅读笔记】MAS-SAM: Segment Any Marine Animal with Aggregated Features

1.论文介绍 MAS-SAM: Segment Any Marine Animal with Aggregated Features MAS-SAM:利用聚合特征分割任何海洋动物 Paper Code(空的) 2.摘要 最近,分割任何模型(SAM)在生成高质量的对象掩模和实现零拍摄图像分割方面表现出卓越…

9.4.k8s的控制器资源(job控制器,cronjob控制器)

目录 一、job控制器 二、cronjob控制器 一、job控制器 job控制器就是一次性任务的pod控制器,pod完成作业后不会重启,其重启策略是:Never; 简单案例 启动一个pod,执行完成一个事件,然后pod关闭;…

基于Flask的岗位就业可视化系统(一)

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 前言 本项目综合了基本数据分析的流程,包括数据采集(爬虫)、数据清洗、数据存储、数据前后端可视化等 推荐…

(40)4.30数据结构(队列)

1.队列的基本概念 2.队列的顺序 #define MaxSize 10 #define ElemType int typedef struct { ElemType data[MaxSize]; int front, rear; }SqQueue;//1.初始化操作 void InitQueue(SqQueue& Q) { //初始化 队头,队尾指针指向0 Q.rear Q.fron…

单细胞|GeneTrajectory·基因轨迹

跑完了,记录一下,顺便写写我在使用中遇到的问题,欢迎讨论~ 声明:我是用自己数据跑的,因为还未发表所以就还是借用官网的图啦~ 1.准备 library(GeneTrajectory) library(Seurat) library(dply…

有哪些软件可以使用云渲染?

随着技术的发展,云渲染已成为动画制作人员与设计师重要的渲染助手。它可结合云端强大的计算机能力,帮助渲染人员高速的完成渲染任务,大幅度节省时间和本地计算资源。它们以用户友好的界面、强大灵活的渲染能力,满足了各类专业渲染…

XSS漏洞---XSS-labs通关教程

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 Level-1 过滤源码&#xff1a;无 pyload&#xff1a; name<script>alert(1)</script> Level-2 过滤源码&#xff1a;利用转译函数将特殊字符转译为实体字符 $str $_GET["…

翻译《The Old New Thing》 - Double-clicking radio buttons

Double-clicking radio buttons - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050804-10/?p34713 Raymond Chen 在 2005年08月04日 让对话框单选按钮支持双击确定 提示 本文提供了一种让对话框窗口上的控件支持双击确定窗口返回的方法 …