Windows10启动Kafka报错java.lang.OutOfMemoryError: Map failed
程序员文章站
2022-03-04 13:33:03
...
背景
在学习Flink的流处理API时,不可避免地要学Kafka。
问题
在启动Kafka的服务器时,报了一堆错误,关键的错误如下
java.io.IOException: Map failed
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:944)
at kafka.log.AbstractIndex$$anonfun$resize$1.apply(AbstractIndex.scala:115)
at kafka.log.AbstractIndex$$anonfun$resize$1.apply(AbstractIndex.scala:105)
at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:213)
at kafka.log.AbstractIndex.resize(AbstractIndex.scala:105)
at kafka.log.LogSegment.recover(LogSegment.scala:256)
at kafka.log.Log.kafka$log$Log$$recoverSegment(Log.scala:342)
at kafka.log.Log.recoverLog(Log.scala:427)
at kafka.log.Log.loadSegments(Log.scala:402)
at kafka.log.Log.<init>(Log.scala:186)
at kafka.log.Log$.apply(Log.scala:1609)
解决方法
1、确认自己的java是64位的,确认方法就是输入java -version,在输出信息里,看到64 bit字样,即为64位,否则就是32位。如下图所示
如果不对,就去java官网下载windows的x64(不是x86)版本,重新安装后,更新环境变量即可
2、如果还不行,就修改kafka\bin\windows目录下的kafka-run-class.bat文件,在set COMMAND一行,把KAFKA_HEAP_OPTS变量去掉,自己强行指定堆栈大小。修改后的这一行为
set COMMAND=%JAVA% -Xmx512M -Xms256M %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*
结语
方法1是我最终的解决方法,又一次弄混了x86和x64,真是自己坑自己..