项目实战20—内存长期占用导致系统缓慢

简介: 项目实战20—内存长期占用导致系统缓慢

前言:

发现问题,解决问题,是贯穿整个项目开发过程的事情,能够处理更多的问题,随着经验的丰富,提前预知更多的问题,让问题不出现是最好的解决问题方式。

问题背景:

项目运行过程中出现了爬取加载慢,核心服务内存占用很高的情况。

问题原因:

以下为分析出来的原因:

1.项目启动的时候分配的堆内存过小

2.项目运行过程中有大量的对象被创建出来,可是没有及时被GC回收,或者具有引用的GC无法回收

3.经过了GC之后,堆内的对象被清理,但是操作系统的内存没有被立刻释放

查看jvm用的是哪种垃圾回收器:

Windows+R > cmd > 输入命令 java -XX:+PrintCommandLineFlags -version

查看内存占用情况:

首先启动当前的项目

找到jdk的bin路径,找到jvisualvm.exe,双击打开

在左侧本地选择对应的项目,双击进去

点击红框内的监视

点击图右上角的“堆Dump”

查看到了内存占用情况

双击对应的行,查看详细的信息,根据信息选择针对性的解决方案

相关文章
|
5月前
|
XML Ubuntu Linux
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
|
2月前
|
存储 缓存 监控
|
2月前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第7天】麒麟系统mate-indicators进程占用内存过高问题解决
202 2
|
13天前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
45 16
|
2月前
|
运维 JavaScript Linux
容器内的Nodejs应用如何获取宿主机的基础信息-系统、内存、cpu、启动时间,以及一个df -h的坑
本文介绍了如何在Docker容器内的Node.js应用中获取宿主机的基础信息,包括系统信息、内存使用情况、磁盘空间和启动时间等。核心思路是将宿主机的根目录挂载到容器,但需注意权限和安全问题。文章还提到了使用`df -P`替代`df -h`以获得一致性输出,避免解析错误。
|
2月前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第5天】麒麟系统mate-indicators进程占用内存过高问题解决
158 0
|
3月前
|
监控 Ubuntu API
Python脚本监控Ubuntu系统进程内存的实现方式
通过这种方法,我们可以很容易地监控Ubuntu系统中进程的内存使用情况,对于性能分析和资源管理具有很大的帮助。这只是 `psutil`库功能的冰山一角,`psutil`还能够提供更多关于系统和进程的详细信息,强烈推荐进一步探索这个强大的库。
48 1
|
4月前
|
缓存 Kubernetes 数据中心
在Docker中,如何控制容器占用系统资源(CPU,内存)的份额?
在Docker中,如何控制容器占用系统资源(CPU,内存)的份额?
|
4月前
|
缓存 Ubuntu Linux
在Linux中,如何检查系统的CPU和内存使用情况?
在Linux中,如何检查系统的CPU和内存使用情况?
|
5月前
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
62 1