Error occurred during initialization of VMCould not reserve enough space for 2097152KB object heap

项目场景:

学习rocketMQ时遇见的问题。


问题描述:

不多bb,都遇见这个报错了,前因后果咱就不多说了。

Java HotSpot(TM) Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap

原因分析:

这个报错里面包含两个警告和一个错误:

(前两个警告不用管,各位都在windows上学校rocketmq了,这些应该对我们都影响不大)

1.第一个警告是关于使用的垃圾收集器的问题。通常情况下,CMS(Concurrent Mark-Sweep)垃圾收集器与DefNew年轻代收集器一起使用。然而,在未来的版本中,这种组合将被废弃并可能被删除。建议您考虑使用其他垃圾收集器组合。

2.第二个警告是关于使用的CMSCompactAtFullCollection选项的问题。这个选项已被废弃并可能在将来的版本中删除。建议您不要使用这个选项。

3.最后一个错误是关于为对象堆分配足够空间的问题。您在试图启动JVM时没有足够的空间来分配一个2,097,152KB的对象堆。您可以尝试减少JVM的最大堆大小,或者释放其他系统资源以提供足够的空间。


解决方案:

 将选中的两个文件的后缀改成txt然后打开

将runserver.cmd中的一段改为

原本这段代码应该是Xms2g 改为 512m
set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m 
-Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

 将runbroker.cmd中的

也是2g变512m
set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m"

问题描述

然后你启动Broker 有会报错

Invalid maximum direct memory size:
 -XX:MaxDirectMemorySize=15g 
The specified size exceeds the maximum representable size. 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit.
最大直接内存大小无效:
 -XX:最大直接内存大小=15g
指定的大小超过最大可表示大小。
错误:无法创建 Java 虚拟机。
错误:发生致命异常。程序将退出。

原因分析:

在您的命令行中,您尝试设置了一个无效的最大直接内存大小。指定的大小(15g)超过了可表示的最大大小。直接内存是在堆外分配的内存,它通过使用ByteBuffer等类提供更直接的访问,并且通常用于处理大量数据的情况。

要解决这个问题,您可以尝试减少最大直接内存大小,以使其符合可表示的范围。例如,您可以将其减小到适当的大小,例如8g或4g。请注意,具体的大小可能会因您的系统配置和可用内存而有所不同。(以上是屁话)

解决方案:

将runbroker.cmd文件的后缀改成txt然后打开

删除包含 -XX:MaxDirectMemorySize=15g

这一行话就解决了

意思就是删除了这个警告 里面警告挺多的 也挺离谱的 有兴趣的大家自行查看。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值