当前位置: 首页 > article >正文

一、内存调优

一、内存调优

什么是内存泄漏
监控Java内存的常用工具
内存泄露的常见场景
内存泄露的解决方案

内存泄露与内存溢出的区别
内存泄露:在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况称之为内存泄露。
在这里插入图片描述

少量的内存泄露可以容忍,但是如果发生持续的内存泄露,就像滚雪球,雪球约滚约大,不管有多大的内存迟早会被消耗完,最终导致的结果就是内存溢出。但是产生内存溢出并不是只有内存泄露这一种原因。
在这里插入图片描述
内存泄露的常见场景
1、内存泄露导致溢出的常见场景是大型的Java后端应用中,在处理用户的请求之后,没有及时将用户的数据删除。随着用户请求数量越来越多,内存泄露的对象占满了对内存最终导致内存溢出。
这种产生的内存溢出会直接导致用户请求无法处理,影响用户的正常使用。重启可以恢复应用使用,但是在运行一段时间之后依然会出现内存溢出。
2、第二种常见场景是分布式任务调度系统如Elastic-job、Quartz等进行任务调度时,被调度的Java应用在调度任务结束中,如果出现了内存泄露,最终导致多次调度之后内存溢出。
这种产生的内存溢出会导致应用执行下次的调度任务执行。同样重启可以恢复应用使用,但是在调度执行一段时间后依然会出现内存溢出。
解决内存溢出的方法
解决内存溢出的步骤总共分为四个步骤,其中前两个步骤是最核心的。
在这里插入图片描述
发现问题-Top命令
top命令,实时查看系统的资源,比如执行时的进程、线程和系统参数等信息。

load average 分别代表过去 1分钟 5分钟 15分钟的系统负载,什么是系统的负载,多核cpu,百分之二, 百分之十 、百分之六
进程使用的内存为RES(常驻内存)-SHR(共享内存)
在这里插入图片描述

优点:操作简单、无额外的软件安装
缺点:只能查看最基础的进程信息,无法查看到每个部分的内存占用(堆、方法区、堆外)

http://www.lryc.cn/news/2383711.html

相关文章:

  • IDEA启动报错:Cannot invoke “org.flowable.common.engine.impl.persistence.ent
  • 从加密到信任|密码重塑车路云一体化安全生态
  • Java的Filter与Spring的Interceptor的比较
  • 多线程编程的典型使用场景
  • grafana dashboard 单位 IEC SI a i
  • WPF···
  • Git的工作流程
  • 微服务架构中的多进程通信--内存池、共享内存、socket
  • 电脑中所有word文件图标变白怎么恢复
  • RK3568 OH5.1 源码编译及问题
  • Qt5、C++11 获取wifi列表与wifi连接
  • 【KWDB 2025 创作者计划】_从部署开始了解KWDB
  • 高等数学-微分
  • 有没有开源的企业网盘,是否适合企业使用?
  • 基于系统整合的WordPress个性化配置方法深度解析:从需求分析到实现过程
  • 离线服务器Python环境配置指南
  • (第94天)OGG 微服务搭建 Oracle 19C CDB 架构同步
  • 参与开发的注意事项
  • 使用pm2 部署react+nextjs项目到服务器
  • 从0到1打造AI Copilot:用SpringBoot + ChatGPT API实现智能开发助手
  • LeetCode Hot100 (双指针)
  • JVM常量池(class文件常量池,运行时常量池,字符串常量池)
  • 开源免费无广告专注PDF编辑、修复和管理工具 办公学术 救星工具
  • 鸿蒙Flutter实战:24-混合开发详解-4-初始化Flutter
  • 我爱学算法之—— 二分查找(中)
  • Golang 并发小结
  • RTC技术
  • 基于Matlab建立不同信道模型
  • uni-app 排坑
  • 军事目标系列之迷彩作战人员检测数据集VOC+YOLO格式2755张1类别