jar包提示无法创建Java虚拟机解决方法及手动释放已修改内存

Longli Lv3

问题描述

今天在在服务器运行业务的jar包时,发现原本正常跑的jar包无法正常启动,命令提示符报错could not create the java virtual machine(无法创建Java虚拟机)。重试多次仍跑不起来。报错如图:

排查原因

Java虚拟机需要分配一定的内存空间来执行程序,包括堆内存、栈内存等。当启动一个Java程序时,如果虚拟机发现无法为程序分配足够的内存空间,就会抛出could not create the Java virtual machine错误。

解决方法

1.设置代码缓存区大小

在运行命令中指定代码缓存区大小,如480M:

1
java -XX:ReservedCodeCacheSize=480M -jar yourjar

2.检查释放服务器可用内存

如果设置代码缓存区后仍提示could not create the java virtual machine(无法创建Java虚拟机),检查服务器可用内存大小,以Windows系统为例:打开任务管理器,上面选项卡选择性能,打开资源监视器,上面选项卡选择内存
如剩余可用内存不足1G,检查进程内存占用,以Windows系统为例:打开任务管理器,上面选项卡选择进程,按内存大小排序,手动释放内存后重新运行jar包(业务允许的情况下重启服务器也可以释放)。

关于手动释放内存

我在遇到这个问题时在进程中找不到内存占用异常的进程,运行的程序也特别少,但是资源监视器里显示有23G内存被已修改占满

如何释放已修改内存

打开任务管理器,切换到“详细信息”标签,右键,选择列,

把“句柄”列勾上

从大到小排序,找到句柄数量异常的非系统类进程,我遇到这个问题时是因为北信源的vrvdep_m进程,当时有三十万多个句柄。结束相关进程即可释放已修改内存。

  • 标题: jar包提示无法创建Java虚拟机解决方法及手动释放已修改内存
  • 作者: Longli
  • 创建于 : 2024-01-16 21:45:00
  • 更新于 : 2025-06-23 00:47:22
  • 链接: https://blog.longli.space/2024/01/16/2024011601/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论