中山品牌网站建设推广,设计师关注的十大网站,青岛建设银行股份有限公司网站首页,搜搜提交网站一、内存占用过高 1、造成服务器内存占用过高只有两种情况#xff1a;内存溢出或内存泄漏 (1)内存溢出#xff1a;程序分配的内存超出物理内存的大小#xff0c;导致无法继续分配物理内存#xff0c;出现OOM报错。 (2)内存泄漏#xff1a;不再调用的对象一直占用着内存不释… 一、内存占用过高 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、打开导出的堆栈信息并全文搜索刚刚拿到的十六进制的线程号就可以找到出问题的代码具体位置了。