0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java服务器内存和CPU占用过高的原因

汽车玩家 来源:今日头条 作者:太平洋海角 2020-03-21 15:50 次阅读

一、内存占用过高

1、造成服务器内存占用过高只有两种情况:内存溢出或内存泄漏

(1)内存溢出:程序分配的内存超出物理内存的大小,导致无法继续分配物理内存,出现OOM报错。

(2)内存泄漏:不再调用的对象一直占用着内存不释放,导致所占用的这块内存被浪费掉,久而久之,内存泄漏的对象堆积起来,也会导致物理机的内存被耗尽,出现OOM报错。

2、内存过高的检测办法:

一般我们的Java服务器都是部署在Linux机器上面,可以通过jvm自带的命令进行一些检测:

(1)查看对象的数目和占用内存大小;

(2)如果需要进一步定位问题代码,那么就需要把Java程序的内存镜像导出,再具体分析了,通过如下命令导出程序的内存镜像。

二、CPU使用过高

1、当程序发现CPU使用过高的情况时,可以使用Windows系统的Process Explorer工具来找到CPU高消耗的线程,所以需要在Windows机器上面搭建好服务器的测试环境,尽量模拟出线上CPU飙升的情况;

2、模拟好环境后,通过任务管理器,在进程一栏中找到Java程序的进程号;

3、下载Process Explorer工具:

4、打开工具后,根据刚才的进程号找到进程;

5、然后右键-->Properties,再选择Threads选项卡,点进CPU排序,可以找到消耗CPU最多的那个线程;

6、使用科学计算器,将十进制的线程号转成十六进制,比如493620-->78834;

7、到此已经拿到了可能出问题的进程号和线程号,接下来使用jvm内置的命令来导出Java的堆栈信息

jstack -l <进程号> > <导出目录+文件名>

8、打开导出的堆栈信息,并全文搜索刚刚拿到的十六进制的线程号,就可以找到出问题的代码具体位置了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10451

    浏览量

    206583
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72779
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    103001
收藏 人收藏

    评论

    相关推荐

    揭秘服务器CPU内存与硬盘的作用

    一般服务器后面插的硬盘我们称为本地盘(安装服务器的操作系统、应用软件等)。   前面的硬盘可以用作配超融合的虚拟存储(即:在服务器上配置虚拟机的时候,一般分配前置硬盘的资源)。
    的头像 发表于 03-25 10:50 227次阅读
    揭秘<b class='flag-5'>服务器</b><b class='flag-5'>CPU</b>、<b class='flag-5'>内存</b>与硬盘的作用

    站群服务器需要多大内存

    站群服务器内存需求取决于网站的数量和流量,以及服务器需要运行的应用和服务。RAKsmart小编为您整理发布站群服务器需要多大
    的头像 发表于 03-04 09:48 172次阅读

    服务器远程不上服务器怎么办?服务器无法远程的原因是什么?

    产生问题的原因,检查硬盘和服务器系统。通过日志和检查数据来确认问题出 现的原因以及如何解决。 三、端口问题 1.端口错误 找回正确的端口或更换远程端口 2.端口被扫爆 更改端口,并在防火墙禁止扫爆的IP
    发表于 02-27 16:21

    服务器内存条和普通内存条的区别

    服务器内存条和普通内存条的区别  服务器内存条和普通内存条是计算机中常见的两种
    的头像 发表于 02-19 10:19 1074次阅读

    服务器cpu和普通电脑cpu的区别

    服务器CPU和普通电脑CPU之间存在许多区别。在以下文章中,我们将详细介绍服务器CPU和普通电脑CPU
    的头像 发表于 02-01 11:14 1352次阅读

    gpu服务器是干什么的 gpu服务器cpu服务器的区别有哪些

    gpu服务器是干什么的 gpu服务器cpu服务器的区别 GPU服务器是一种专门用于处理图形运算的服务器
    的头像 发表于 01-30 15:31 322次阅读

    cpu温度太高怎么解决?cpu温度高的原因

    如何解决这一问题。 一、CPU温度过高原因 1. 散热系统不当:服务器或台式机的散热系统设计可能不够完善,或者由于久经使用而积灰、质量下降等问题。
    的头像 发表于 12-09 16:15 1646次阅读

    Java程序CPU使用率高的原因

    Java程序是一种高级编程语言,由于其跨平台的特性和强大的功能,被广泛应用于服务器端、企业级应用和大数据处理等场景。然而,在某些情况下,我们可能会发现Java程序的CPU使用率异常高,
    的头像 发表于 12-05 11:20 2796次阅读

    javacpu占用过高如何分析

    JavaCPU占用过高是一种常见的问题,需要通过多种方法进行分析和解决。本文将详细介绍JavaCPU
    的头像 发表于 12-05 11:15 4107次阅读

    cpu满载是什么原因 cpu容易满载怎么办 cpu过高怎么处理

    cpu满载是什么原因 cpu容易满载怎么办 cpu过高怎么处理  CPU满载是指
    的头像 发表于 11-28 17:29 7337次阅读

    java内存溢出的几种原因和解决办法

    Java是一种使用垃圾回收机制的编程语言,由于自动内存管理机制的存在,Java程序中发生内存溢出(Out of Memory)错误的情况相对较少。然而,虽然
    的头像 发表于 11-23 14:44 2878次阅读

    用于Java服务器的ChartFX 8

    多年来,ChartFX for Java 一直是Java服务器应用程序数据可视化组件的领导者。ChartFX 8 for Java Server 现在为NetBeans和所有基于Ecl
    的头像 发表于 07-29 08:58 610次阅读

    服务器与PC机的比较

    软件等。 处理器是服务器的大脑,根据IDC,以经典x86服务器E5高配为例,CPU成本在基础型服务器中约占32%,在更高高性能的服务器中,处
    的头像 发表于 06-17 14:51 549次阅读
    <b class='flag-5'>服务器</b>与PC机的比较

    使用webnet实现wet服务器内存占用过大怎么办?

    我想实现用网页来配置和升级我的产品,目前选择webnet,添加了fat文件系统,上传了sample的网页,能够正常访问了。访问过程堆内存快被分配完了,如图: 开启web服务器用来5K,浏览访问
    发表于 05-05 14:17