果通过指令的话,一般先调用jps查看到具体的pid,然后调用jstat来查看运行时的内存,以及GC的频率等,然后通过jstack查看线程是有阻塞、死锁、循环等,最后通过jmap生成的堆快照进行分析内存溢出的地方。

使用可视化工具的话:

如果是jConsole,可以通过内存窗口查看堆以及各个部分的内存情况,通过线程窗口可以查看线程是否等待、循环、死锁等情况。

是 同VisualVM可以定位到具体内存溢出的位置。通过VisualVM可以观察堆、新生代、老年代、永久代的情况,同样通过线程查看是否有阻塞、循环、 死锁等情况。如果有内存溢出情况,首先是在监视窗口点击堆快照,生成快照,然后分析堆快照,通过分析堆转储上的线程,定位到具体执行的线程,然后就可以具 体分析线程里面的实例的数量以及大小,同时可以定位到程序中具体那一行代码,通过代码上下文具体是否写错了。

相关文章:

  • 2021-11-30
  • 2022-02-15
  • 2022-12-23
  • 2022-01-06
  • 2021-12-28
  • 2021-07-20
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-24
  • 2021-05-27
  • 2022-12-23
  • 2021-05-29
  • 2022-12-23
  • 2021-10-17
相关资源
相似解决方案