You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 10下Cassandra启动失败:遇EXCEPTION_ACCESS_VIOLATION(0x0000005)异常

解决Cassandra 3.11.1在Windows下启动时的EXCEPTION_ACCESS_VIOLATION错误

我之前在Windows环境折腾Cassandra的时候也碰到过一模一样的问题,EXCEPTION_ACCESS_VIOLATION(0x0000005)这个错误大概率和JVM内存配置、Java版本兼容性或者Windows系统的内存限制有关,给你几个亲测有效的排查和解决步骤:

  • 检查Java版本兼容性
    Cassandra 3.11.1对Java版本有明确要求,只能用Java 8(OpenJDK或者Oracle JDK都可以,但更推荐OpenJDK)。如果你装的是Java 11及以上版本,大概率会出现这类内存访问错误。可以打开命令行输入java -version确认版本,如果不对,赶紧换成Java 8,记得同步更新JAVA_HOMEJRE_HOME到Java 8的安装路径。

  • 调整JVM启动参数(不止-Xmx)
    只设置-Xmx2048m可能不够,Cassandra的默认启动参数还需要配置堆初始值和其他内存相关参数,建议修改conf/cassandra-env.bat文件:

    1. 找到文件里的set MAX_HEAP_SIZEset HEAP_NEWSIZE配置项
    2. 修改为:
      set MAX_HEAP_SIZE=2048m
      set HEAP_NEWSIZE=512m
      

    这里HEAP_NEWSIZE一般设置为MAX_HEAP的1/4左右,能帮助JVM更好地管理新生代内存,减少内存碎片。

  • 检查Windows虚拟内存设置
    有些Windows系统的虚拟内存配置会和Cassandra的JVM内存设置冲突,你可以尝试调整:

    1. 右键「此电脑」→属性→高级系统设置→高级→性能→设置→高级→虚拟内存→更改
    2. 取消勾选「自动管理所有驱动器的分页文件大小」
    3. 选择系统盘,设置为「无分页文件」后点击「设置」,重启电脑再启动Cassandra(注意:如果你的物理内存小于4G,不建议这么做,保持系统自动管理即可)
  • 以管理员身份启动命令行
    Windows下的权限限制有时候也会导致Cassandra无法正常分配内存,右键命令提示符选择「以管理员身份运行」,再执行bin/cassandra.bat启动服务,看看是否还报错。

  • 确认Cassandra解压路径
    确保Cassandra的解压路径里没有空格或者中文,比如D:\Cassandra\apache-cassandra-3.11.1是没问题的,但D:\Cassandra 3.11.1或者D:\卡桑德拉这类路径会导致启动时的各种异常,包括内存访问错误。

如果以上步骤都试过还是不行,可以打开logs/system.loglogs/debug.log查看更详细的错误栈,关键信息能帮助进一步排查问题。

内容的提问来源于stack exchange,提问作者nikjov92

火山引擎 最新活动