背景
想来大家在学习 JVM
的过程中,都会用到 jmap - heap 进程id
命令来查看某一时刻堆内存占用情况吧,这里记录一个我在使用 jmap
命令时遇到的小 bug
。
环境
操作系统:Windows10
编译器:IDEA
本地 JDK
版本:1.10
IDEA
内配置此项目使用 JDK1.8
ps:如果本地有多个版本 JDK
,一定要注意下图四个地方都配置一致。
问题描述
问题信息:
Error: -heap option used Cannot connect to core dump or remote debug server. Use jhsdb jmap instead
什么意思?让我用 jhsdb jmap
指令?
于是我尝试了一下
jhsdb jmap -heap 21000
接下来是另一个错误,因为重点不在此,就不贴图了。
问题分析
于是我上网查了一下 jmap
查看堆内存命令到底怎么写,结果发现就是 jmap -heap 进程id
,我写的没有问题呀,不过有一篇文章的一句话给了我提示:
使用
jmap
指令时需要注意,如果启动时所使用的java
版本与jmap
的版本是不同的,就会报错
这种情况通常发生在机器上安装了多个版本的jdk
包,需要仔细找一下需要使用的版本
文章链接:https://techlog.cn/article/list/10183171
于是我在 IDEA
的 Terminal
窗口内输入 java -version
发现是 1.10
,原来这里使用的是我在环境变量中配置的 JDK10
,而我的项目内使用的是 JDK8
,版本不同,所以就出错了。
问题解决
由于我的项目内有些代码是基于 JDK8
的,所以项目的 JDK
版本不能更换,那就只能将环境变量中的 JDK10
更改为 JDK8
版本啦。至于具体如何更换,可参照我以往的文章:本地环境变量 JDK 版本更换。
如果有问题欢迎在评论区留言与我交流呀~