You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jlink选项--strip-native-commands的作用、含义及使用代价解析

关于--strip-native-commands选项的解析

一、"native commands"的含义

这里的native commands指的是JDK运行时镜像中附带的原生可执行工具程序——也就是由C/C++等原生代码编译而成、非Java编写的命令行工具,它们原本属于JDK的一部分,但对于仅需运行Java应用的镜像来说并非必需组件。

二、具体移除的内容

该选项会清理掉运行时镜像里的几类原生工具(不同JDK版本可能略有差异):

  • 调试诊断类:比如jstack、jmap、jcmd、jhsdb这类用于排查Java进程问题的工具
  • 性能分析类:像jstat、jstatd这类监控JVM运行状态的程序
  • 辅助工具类:比如rmiregistry、pack200/unpack200这类非核心运行必需的原生命令

你观察到的体积小幅缩减(从34612到34568,单位应为KB),正是因为删除了这些工具的可执行文件——它们单个体积不大,所以整体缩减幅度有限。

三、使用该选项的潜在代价

  • 丢失本地诊断能力:如果应用在生产环境出现死锁、内存泄漏等问题,无法直接在镜像环境内使用这些原生工具进行本地排查,只能依赖远程诊断或额外挂载外部工具
  • 功能依赖失效风险:若你的应用代码或依赖框架需要调用这些原生工具(比如部分监控组件会自动调用jcmd获取JVM信息),运行时会出现「找不到命令」的错误
  • 版本兼容性隐患:这是jpackage传递给jlink的未公开选项,JDK官方未将其纳入公开文档规范,后续版本可能修改其行为甚至直接移除,无公开兼容性保障

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:56:08