生成大量的对象,导致内存溢出-》执行步骤6,查看具体内存对象占用情况。 内存占用不高,但是Full GC次数还是比较多,此时可能是代码中手动调用 System.gc()导致GC次数过多,这可以通过添加 -XX:+DisableExplicitGC来禁用JVM对显示GC的响应。 2.代码中有大量消耗CPU的操作,导致CPU过高,系统运行缓慢; 执行步骤1-4:在步骤...
COMMAND:命令名/命令行; 排查步骤 top:查看cpu过高的进程id; top -Hp 进程id :显示一个进程ID的线程运行信息列表,按cpu占用排列; jstack java进程id | grep 16进制的线程id:先将线程id转化为16进制后,查看java进程的堆栈信息; jstat -gc java进程id 2000(2s一次) 10(共计10次):连续打印java进程的内存占用...
找到步骤一中的PID对应的进程,右键Properties...选项 找到CPU使用率高的TID,通过jstack工具导出的信息中线程TID是十六进制的,需要转换进制 将16进制到之前导出的线程记录文件中查询,可以看到我自定义的线程名以及代码位置,可以追踪到具体业务逻辑进行排查问题 我之前的问题是开了线程池处理一个队列里的数据,当队列无数据...
Process Explorer中,选中最占用CPU的那个应用(javaw.exe)--》右键Properties--》切换到Threads栏--》默认将线程按CPU进行倒序排列。 每行都代表一个线程,tid代表的就是该线程所对应的线程id(十进制)。 第四步:在线程文件中查找该线程id 根据该tid去log文件中查找,就能找到该线程所对应的java代码。 由于,刚才导出...
1、先运行java项目 2、打开任务管理器,找到cpu占用的java进程的PID 3、再利用jdk自带的jstack命令,在控制台下,jstack -l PID >E://wwww.stack,这个命令就是把这个进程的堆栈信息打印到E盘下wwwww.stack这个文件中 4、下载windows查看线程的工具process-explorer 连接 https://download.sysinternals.com/files/Proce...
占用大量 CPU 或内存资源的进程为业务进程 如果您发现业务进程占用了大量 CPU 或内存资源,例如 IIS、HTTPD、PHP、Java 等,建议进一步分析。 例如,判断当前业务量是否较大。 若业务量较大,建议您升级服务器配置;若不升级服务器配置,可以考虑业务程序是否存在优化空间,请进行优化。
排查思路: 1、找到cpu高占用的进程,并通过Process Explorer进一步定位对应的线程 2、利用jstack分析堆栈状态,定位到cpu高占用线程的堆栈状态,根据相关信息定位到具体的代码。 模拟问题程序: publicclassJavaThreadUseDemo{publicstaticvoidmain(String[]args){Threadthread=newThread(newRunnable(){@Overridepublicvoidrun()...
占用大量 CPU 或内存资源的进程为业务进程 如果您发现业务进程占用了大量 CPU 或内存资源,例如 IIS、HTTPD、PHP、Java 等,建议进一步分析。 例如,判断当前业务量是否较大。 若业务量较大,建议您升级服务器配置;若不升级服务器配置,可以考虑业务程序是否存在优化空间,请进行优化。
占用大量 CPU 或内存资源的进程为业务进程 如果您发现业务进程占用了大量 CPU 或内存资源,例如 IIS、HTTPD、PHP、Java 等,建议进一步分析。 例如,判断当前业务量是否较大。 若业务量较大,建议您升级服务器配置;若不升级服务器配置,可以考虑业务程序是否存在优化空间,请进行优化。