运行Zeppelin时出现“未识别的VM选项'MaxPermSize=512m'”

37

当我尝试通过以下任一方式运行Zeppelin时

bin/zeppelin.sh
或者
bin/zeppelin-deamon.sh start

我遇到了如下错误信息。

Unrecognized VM option 'MaxPermSize=512m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

我的系统(Ubuntu 16.04)上已安装了Java 9。

$ java -version                         
openjdk version "9-internal"
OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)

2
您的系统似乎安装了一个古老版本的JDK 9。JDK 9 GA版本发布于2017年9月,版本号为“9”。而您的版本似乎是早在2016年就发布的。无论如何,MaxPermSize选项只适用于JDK 7及更早版本。对于JDK 8和JDK 9,您将会收到类似于“忽略选项MaxPermSize=128m;该选项已在8.0中删除”的警告信息。最后一点,如果Zeppelin有问题跟踪器,那么提交一个错误报告将会很有帮助,这样他们就知道要更新他们的脚本了。 - Alan Bateman
是的,它看起来确实像一个古老的版本。openjdk-9-jdk 系列已经安装在我的系统上,我已经将它们删除了。 - sbbs
这个回答解决了你的问题吗?Android Studio - 无法识别的VM选项'MaxPermSize=256m' - Mahozad
5个回答

27

如果还有人遇到这个问题,将MaxPermSize重命名为MaxMetaspaceSize可以解决我的问题。我之前从gradle7.2迁移到gradle8,并使用jdk11,现在使用jdk17。


2
这应该是被接受的答案。 - Hitesh Bisht
这不应该是被接受的答案 - PermGen和Metaspace是完全不同的东西。对于设置该参数的人来说,主要区别在于PermSize总是有一个上限,如果未指定,默认为82MB,而Metaspace的上限默认情况下未指定(因此设置它实际上是引入它)。因此,这些是两个完全不同的属性,具有不同的含义,不应该建议简单地用一个替换另一个。如果有的话,一般建议就是干脆删除这个参数,让metaspace保持原样。 - undefined
@Deltharis - 文档明确建议进行替换:https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html#removed-java-options - undefined
@Gorbles 旧选项已被取代。这并不意味着新选项是它的直接替代品。我甚至提到了原因 - 将MaxPermSize设置为增加它(我相信这是设置它的最常见原因)的人没有必要设置MaxMetaspaceSize。 - undefined

26

看来在Java 9中已不再支持MaxPermSize VM选项。也许它们更改了参数名称或其他什么东西。由于我没有坚持使用Java 9的特殊原因,所以不必继续深入研究这个问题,我按如下方式安装了Java 8:

sudo apt install openjdk-8-jdk

并将其设置为默认的Java环境

sudo update-alternatives --config java

这解决了问题。


15
MaxPermSize 在Java 8中已被移除,你应该在这个版本中收到相同的警告。 - Didier L
@DidierL 是正确的。Zeppelin 发出了一个警告:OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0 - sbbs
这个概念对我很有效。在我的情况下,版本不同。 - Shrikant Jha
3
降级由于“错误”的参数总是最糟糕的想法。 - The incredible Jan

5

请检查您的gradle.properties

我在其中有这行代码

org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

把它移除了,一切正常运作得像魔法一样 :)


1
删除这行代码会有什么作用? - undefined

1
从OpenJDK17开始,这些Java选项-XX:MaxPermSize=256m已被移除,使用它们会导致错误。您需要删除Java选项中的-XX:MaxPermSize=512m,并替换为-XX:MaxMetaspaceSize=512m
参见:已移除的Java选项文档

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接