一、内存调优

一、内存调优

什么是内存泄漏

监控Java内存的常用工具

内存泄露的常见场景

内存泄露的解决方案

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

少量的内存泄露可以容忍,但是如果发生持续的内存泄露,就像滚雪球,雪球约滚约大,不管有多大的内存迟早会被消耗完,最终导致的结果就是内存溢出。但是产生内存溢出并不是只有内存泄露这一种原因。

内存泄露的常见场景

1、内存泄露导致溢出的常见场景是大型的Java后端应用中,在处理用户的请求之后,没有及时将用户的数据删除。随着用户请求数量越来越多,内存泄露的对象占满了对内存最终导致内存溢出。

这种产生的内存溢出会直接导致用户请求无法处理,影响用户的正常使用。重启可以恢复应用使用,但是在运行一段时间之后依然会出现内存溢出。

2、第二种常见场景是分布式任务调度系统如Elastic-job、Quartz等进行任务调度时,被调度的Java应用在调度任务结束中,如果出现了内存泄露,最终导致多次调度之后内存溢出。

这种产生的内存溢出会导致应用执行下次的调度任务执行。同样重启可以恢复应用使用,但是在调度执行一段时间后依然会出现内存溢出。
解决内存溢出的方法

解决内存溢出的步骤总共分为四个步骤,其中前两个步骤是最核心的。

发现问题-Top命令

top命令,实时查看系统的资源,比如执行时的进程、线程和系统参数等信息。

load average 分别代表过去 1分钟 5分钟 15分钟的系统负载,什么是系统的负载,多核cpu,百分之二, 百分之十 、百分之六

进程使用的内存为RES(常驻内存)-SHR(共享内存)

优点:操作简单、无额外的软件安装

缺点:只能查看最基础的进程信息,无法查看到每个部分的内存占用(堆、方法区、堆外)

相关推荐
用户84913717547161 天前
生产级故障排查实战:从制造 OOM 到 IDEA Profiler 深度破案
java·jvm
爱学java的ptt1 天前
jvm笔记
jvm·笔记
DKPT2 天前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring
低客的黑调2 天前
为你的项目选择一个适合的[垃圾收集器]
java·jvm·算法
xu_yule2 天前
Linux_14(多线程)线程控制+C++多线程
java·开发语言·jvm
豆奶特浓62 天前
Java面试生死局:谢飞机遭遇在线教育场景,从JVM、Spring Security到AI Agent,他能飞吗?
java·jvm·微服务·ai·面试·spring security·分布式事务
Boop_wu2 天前
[Java EE] 多线程进阶(JUC)(2)
java·jvm·算法
3***31212 天前
java进阶1——JVM
java·开发语言·jvm
打工人你好4 天前
如何设计更安全的 VIP 权限体系
java·jvm·安全
unclecss4 天前
把 Spring Boot 的启动时间从 3 秒打到 30 毫秒,内存砍掉 80%,让 Java 在 Serverless 时代横着走
java·jvm·spring boot·serverless·graalvm