Micronaut AWS Lambda原生镜像运行报错:找不到'MaxPermSize'选项
解决AWS Lambda运行Micronaut原生镜像时的
MaxPermSize错误 核心问题原因
-XX:MaxPermSize是Java 8及更早版本的专属参数,Java 9+(包括你使用的GraalVM Java 11)已经移除了PermGen内存区域,改用Metaspace。这个无效参数会直接导致Lambda启动失败。
修复步骤
1. 移除Lambda环境变量中的无效配置
删除AWS Lambda配置里的JAVA_TOOLS_OPTIONS -XX:MaxPermSize=2048m环境变量。原生镜像运行时是编译后的二进制程序,不需要任何JVM相关启动参数,该变量会干扰Lambda正常启动。
2. 修改Gradle构建配置,替换内存参数
编辑你的Gradle配置,删除dockerfileNative任务中的"-XX:MaxPermSize=2048m",替换为Java 11+兼容的Metaspace参数:
tasks.named("dockerfileNative") { args( "-XX:MaxMetaspaceSize=2048m", "-XX:MaximumHeapSizePercent=80", "-Dio.netty.allocator.numDirectArenas=0", "-Dio.netty.noPreferDirect=true" ) }
3. 重新构建并部署
执行以下命令重新构建原生Lambda包:
./gradlew clean buildNativeLambda
将新构建的包重新部署到AWS Lambda即可。
内容的提问来源于stack exchange,提问作者Arif Shaikh
相关产品推荐
相关产品推荐

