前言
内存消耗分析请先了解java虚拟机
https://blog.csdn.net/glamour2015/article/details/104294620
JVM垃圾回收与内存调优
https://blog.csdn.net/glamour2015/article/details/104241942
常见OOM异常分析
https://blog.csdn.net/glamour2015/article/details/104833387
Java应用对于内存的使用包括两方面 JVM堆内存 和 JVM堆外内存。
JVM堆内存
Java应用对内存的消耗上主要是在JVM堆内存上。在正式环境中,多数Java应用都会将 -Xms 和 -Xmx设为相同的值,避免运行期要不断申请内存。
JVM堆外内存
目前Java应用只有在创建线程和使用Direct ByteBuffer 时才会操作JVM堆外的内存JVM。对于JVM堆以外的内存方面的消耗,最为值得关注的是swap的消耗 以及 物理内存的消耗,这两方面的消耗都可基于操作系统的命令来查看。
关于java应用的内存,通常只需要关注jvm内存,但有些特殊情况也需要关注物理内存。关于jvm内存,常见的工具有jstat, jmap, pidstat, vmstat, top
JVM内存消耗过多会导致GC执行频繁,CPU消耗增加,应用线程的执行速度严重下降,甚至造成OutOfMemoryError,最终导致Java进程退出。
Linux内存消耗分析工具介绍
在Linux中可通过vmstat、sar、top、pidstat, pmap等方式来查看 swap和物理内存的消耗状况。
** vmstat**
在命令