欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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位。如下图所示

Windows10启动Kafka报错java.lang.OutOfMemoryError: Map failed

如果不对,就去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,真是自己坑自己..

相关标签: Kafka