jps:列出系统中所有的Java进程。
jinfo PID:显示进程信息
jconsole:图形化显示内存和线程信息,集成了其他几个命令的功能
jstat -gcutil pid interval: util显示的是百分比
jstat -gc pid:没有util显示的是具体的值
为了找出线程在做什么事情,我们需要用 jstack 命令生成线程快照
jstack pid:打印进程里的线程的相关信息
jstack 的输出比较大,你可以将输出写入文件 jstack 4361 > 4361.log
创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。
jmap -histo pid:进程里有哪些类
jmap -dump:file = xxx.hprof pid:把堆里的信息导出成一个文件
jporfile最好用但收费
heapdumponoutofmemoryerror:发生oom错误时自动dump堆文件
jvisualVM:可视化工具可打开dump文件详细查看内容
xms,xmx分别是最大和最小堆内存,一般设置成一样的,防止内存抖动。
当没有配置时,默认 -Xmx 是物理内存的 1/4
回收不了的对象就是典型的内存泄露---有泄露就意味着fullgc也回收不了,能回收得了就不叫泄露
查看进程后发现,原来是 VM Thread 线程占用了 CPU,这个线程是做垃圾回收(GC)的