java导致元空间溢出_JVM知识点——内存溢出和内存泄漏

面试苏宁时,问的,内存溢出怎么处理?

处理思路:先救火,再防火。

首先dump JVM的内存信息,这个信息用于后续的问题分析。如果重启了服务,JVM也会重启,这个信息就会丢失,所以务必先备份JVM的内存信息!!!

总的来说,是通过jmap命令来备份JVM的内存信息,同时,需要我们了解进程的pid。

1、获取进程的pid:

ps -e | grep "NAME"

其中,NAME指的是进程的名字。执行命令得到的信息中,包含pid,可以根据进程的信息找到对应的pid。

当然,如果觉得查询出现的内容太多,也可以指定显示哪一列。例如,我的进程名字是“dialogue”,上面查询显示的第二列信息是pid,所以我的命令可以如下输入:

ps -e | grep "dialogue" | awk '{print $2}'

2、备份内存信息:

jmap -dump:format=b,file=[fileName] [pid]

jmap命令可以用来获取JVM堆内存的信息,jmap -dump用来dump堆内存的信息。fileName指的是备份的堆内存信息保存的文件名,pid表示需要备份的进行的pid。例如,我的进程pid是73452,想要将堆内存信息保存在当前目录的jvm_heap.dump文件中,可以执行以下命令:

jmap -dump:format=b,file=jvm_heap.du

你可能感兴趣的:(java导致元空间溢出)