开发者社区 > 云原生 > Serverless > 正文

查出服务器最占内存的三个进程占服务器内存71.2%左右,但是服务器内存使用率实际已达到90%,重启服

查出服务器最占内存的三个进程占服务器内存71.2%左右,但是服务器内存使用率实际已达到90%,重启服务后内存恢复正常,有人遇到过这种问题吗?

提问2.jpg

提问3.jpg

提问4.jpg

展开
收起
云原生那些事 2023-07-24 15:52:01 127 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    这种情况的常见原因有以下几点:

    Java应用程序产生大量强引用导致的内存泄露
    比如条件不满足的循环、不释放资源对象等问题。

    存在大量闲置线程导致的内存泄露
    由于线程持有JVM堆内存无法释放。

    JVM参数设置不当导致频繁FULL GC但无法释放足够内存
    如设置的初始内存和最大内存 too small等问题。

    常用第三方组件或框架存在bug导致的内存泄露
    如日志组件、数据库连接池等。

    配置或代码存在循环引用无法释放内存对象
    如静态变量循环引用、 equals()和hashCode()方法实现不当等。

    2023-07-28 23:35:58
    赞同 展开评论 打赏
  • 查一下是哪几个对象占用内存最多,然后看这些对象是否可以释放,但是一直没有被释放

    此答案来自钉钉群“Arthas开源交流群"

    2023-07-24 21:19:23
    赞同 展开评论 打赏
  • 是的,有人可能会遇到类似的问题。以下是一些可能导致此问题的常见原因:

    1. 内存泄漏:某些进程可能存在内存泄漏,即它们在运行过程中分配了内存但没有正确释放。这将导致内存逐渐耗尽,并最终导致服务器内存使用率升高。

    2. 资源管理问题:某些进程可能在处理大量数据或执行复杂操作时占用更多的内存。如果这些进程没有正确管理资源,可能会导致内存占用过高。

    3. 进程优先级设置不当:某些进程可能被设置为较高的优先级,从而导致它们获取更多的系统资源,包括内存。这可能会导致其他进程无法获得足够的内存空间。

    4. 配置错误:某些应用程序可能配置不正确,导致其使用更多的内存资源。这可能是由于配置参数设置不合理、缓存大小过大或其他错误导致的。

    解决此问题的方法可能包括:

    1. 监控工具:使用监控工具来持续监测服务器的内存使用情况和各个进程的内存占用情况。这有助于确定造成内存占用高的进程,并进行相应的优化和调整。

    2. 代码审查和优化:对占用内存高的进程进行代码审查,寻找潜在的内存泄漏或资源管理问题,并进行相应的优化和修复。确保内存分配和释放正确且合理。

    3. 资源限制和调整:根据实际需求和服务器资源状况,可以考虑调整进程的优先级、限制进程可使用的内存资源,或者对相关配置进行调整以减少内存占用。

    4. 更新和修复:确保您的系统和应用程序处于最新版本,并及时应用补丁和更新。这有助于修复已知的内存相关问题和漏洞。

    2023-07-24 17:05:07
    赞同 展开评论 打赏

快速交付实现商业价值。

相关电子书

更多
服务上云加速大家居产业C2M进程 立即下载
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载