Jaunch是用于启动Java和Python程序的本机应用程序,包括ImageJ和Fiji。
简介
启动器是一个本机执行文件,其目的是启动Java虚拟机(以及可选的Python)并在运行ImageJ 或 Fiji。
济斐从之前的ImageJ Launcher改为Jaunch in February 2025。Jaunch是一个现代的本机启动器,支持JVM和Python运行时,并具有基于TOML的灵活配置系统。
来源
Jaunch启动器源代码位于on GitHub中。
旧版ImageJ启动器源代码也保留在on GitHub中,但将不再更新。
目的
启动器为ImageJ应用程序提供了特定于平台的入口点。一个主要功能是通过在程序首次启动时处理待处理的更新来促进ImageJ Updater功能。
满足
相关支持选项的概述,请运行:
./fiji --help
此调用将通过 fiji shell 脚本(非 Windows)或 fiji.bat(在 Windows 上)调用正确的平台特定启动器执行文件(Linux x86-64 上的 §§2§§§、macOS Apple Silicon 上的 macos-arm64、Windows x86-64 上的 windows-x64 等)。
基本使用
基于 Jaunch 的启动器可以执行各种操作,例如:
- 使用不同的内存量启动Fiji:
./fiji --mem=4g - 运行macros and scripts in headless mode
- 从命令行控制Updater:
./fiji --update-图片打开:./fiji example.jpg - 调用脚本:
./fiji example.py(适用于 Python、Jython、JRuby.rb、Beanshell.bsh、Clojure.clj和 JavaScript.js) - 显示java但命令行正在运行 ImageJ:
./fiji --dry-run - 运行自定义Java类的main()方法:
./fiji --main-class=com.example.MyClass - 通过Java options:
./fiji -server --(--之前的所有内容都被解释为Java选项) - 将斐济链接到路径:
ln -s $(pwd)/fiji $HOME/bin/fiji && fiji - 启动斐济并直接运行菜单项:
./fiji --run System_Clipboard(使用下划线代替空格引用) - 在脚本编辑器中编辑文件:
./fiji --edit myscript.py
Python模式
Fiji 的 Jaunch 启动器支持在 Python 模式下运行,该模式使用 PyImageJ 启动器 Python 解释器:
- 以Python模式启动:
./fiji --python-设置默认为Python模式:编辑config/jaunch/fiji.cfg并设置launch-mode = 'PYTHON'
在 Python 模式下,Fiji 使用 PyImageJ 提供从 Python 无缝访问 ImageJ 功能的功能。
##下载
该启动器与斐济捆绑销售。额外下载任何东西。
##配置
启动配置
Fiji 的 Jaunch 启动器使用位于 config/jaunch/目录中的 TOML 配置文件:
config/jaunch/fiji.cfg- 用户配置文件(覆盖默认值)config/jaunch/fiji.toml- 主要斐济配置(斐济特定的启动器行为)config/jaunch/jvm.toml- JVM 程序的配置config/jaunch/python.toml- Python 程序的配置config/jaunch/common.toml- 基础配置默认值
示例 fiji.cfg
创建或编辑config/jaunch/fiji.cfg以自定义您的斐济安装:
# Fiji user configuration
# Set maximum heap size (default: 75% of available RAM)
max-heap = '8g'
# Set default launch mode: 'JVM' or 'PYTHON'
launch-mode = 'JVM'
在程序 GUI 中:
- 您可以通过Edit › Options › Python…对话框编辑
max-heap值。 - 您可以使用 Edit › Options › Memory and Threads…对话框在 JVM 和 Python 之间切换
launch-mode,以及python-dir。
可用的配置选项
max-heap- 最大 JVM 堆大小(例如,'4g'、'75%'、'50%')launch-mode- 默认运行时间模式:'JVM'或'PYTHON'python-dir- 自定义Python环境目录
旧版ImageJ.cfg(ImageJ启动器)
对于使用旧版 ImageJ Launcher 的旧版本 Fiji 和 ImageJ,可以通过 ImageJ.cfg 完成配置:
# ImageJ startup properties
maxheap.mb = 1024
jvmargs = -XX:+HeapDumpOnOutOfMemoryError -Xincgc
legacy.mode = false
注意:旧版 ImageJ.cfg 文件需要第一个“# ImageJ 启动属性”注释行。
Java 选项
传递Java选项
您可以传递Java虚拟机选项来自定义运行时行为。
在命令行上输入Java选项时,可以使用--分区符来消除程序参数中启动器和JVM选项的歧义:
# Pass a single launcher option (no double-dash required):
./ImageJ-linux64 --mem=4g
# Pass a single Java option (with double-dash disambiguation):
./ImageJ-linux64 -Xms2g --
# Pass both launcher and Java options (with disambiguation):
./ImageJ-linux64 --mem=4g -XX:+UseG1GC --
# Pass program arguments (no disambiguation):
./ImageJ-linux64 --run script.groovy
# Pass both launcher options, Java options and program arguments (with disambiguation):
./ImageJ-linux64 --mem=4g -Xms2g -- --run script.groovy
Launcher options (like --mem, --update, --python) and JVM options (like -Xmx, -XX:+UseG1GC) both go before the -- separator. Arguments to the program itself, such as files to open at startup, go after the --.
Jaunch makes a best effort to classify each argument as launcher option, JVM option, or program argument, even without the -- being present, so in most cases you won’t need it. But if Jaunch misclassifies any of your arguments, you can use it to correct the issue.
常见 Java 选项
以下是您可能需要调整一些常见的与内存相关的选项:
-Xms和-Xmx设置堆的最小和最大大小。使用这些标志,如-Xmx8g(8 GB) 或-Xmx512m(512 MB) 可以。同时设置另一种可以提高启动性能,因为堆不需要逐渐增长。或者对于最大堆,您使用--mem选项:--mem=8g。-XX:+UseG1GC启用G1垃圾收集器,对于大堆(>4GB)效果更好。斐济默认启用此功能,除非您通过--default-gc。-XX:+HeapDumpOnOutOfMemoryError在内存不足时创建堆转储文件,对于调试内存问题很有用。
还有一些用于记录跑步时间信息的基本标志:
-verbose:gc记录垃圾收集器及其运行所花费的时间。我通常使用它作为我的第一个工具来调查 GC 是否给应用程序带来了限制。-Xprof低开放影响采样分析器。我曾有热点工程师建议我“不要使用这个”,但我仍然认为它是寻找障碍的一个不错的(非常生硬)工具。只是尽管不要将结果仅仅用于指导。-Xrunhprof打开影响力的仪器分析器。没有额外参数的默认调用记录对象分配和高分配站点,这用于创建过多的对象高度用。-Xrunhprof:cpu=times检测JVM中的所有Java代码并调用记录所占用的实际CPU时间。
示例
以下是基于 Headius’s blog 的建议的一些示例:
示例 1:设置堆大小和垃圾收集器
# Using Jaunch (Fiji 2.15.0+):
./fiji --mem=4g --gc-g1
# Or with the old ImageJ Launcher:
./ImageJ-linux64 -Xms4g -Xmx4g -XX:+UseG1GC --
G1垃圾收集器适用于大型堆,提供比默认收集器更短的暂停时间。
示例 2:启动时运行宏
./fiji --mem=4g -- -eval "open('/path/to/project.xml');"
示例 3:以自定义堆大小的 Python 模式启动
./fiji --python --mem=8g
这将使用 PyImageJ 以 Python 模式启动 Fiji,JVM 的堆大小为 8GB。
示例4: 启用调试代理
./fiji --debugger=8010
要连接调试器,请使用 jdb 或 IDE 的调试器端口 8010:
jdb -attach 8010
请参阅第 inspect the state of threads 中使用 jdb 的示例。这对于挂起线程、打印堆栈跟踪和检查线程状态(睡眠、等待、死锁等)很有用。
示例 5:创建启动脚本
您可以创建一个 shell 脚本来组合多个选项:
#!/bin/bash
/path/to/Fiji/fiji \
--mem=8g --gc-g1 \
--debugger=8010 \
-- "$@"
-- "$@"将任何脚本成分成分到斐济。
高级 Java 选项
为了进行高级调整,您可能需要调整 JVM 的级别设置:
####收集垃圾调整
-XX:+UseParallelGC- 玩具垃圾收集器(有利于货物)-XX:+UseG1GC- G1垃圾收集器(适合大堆,暂停时间短) - 斐济的默认设置-XX:+UseZGC- Z 垃圾收集器(超低暂停时间,Java 11+)-XX:NewRatio=#- 设置堆中“新”代与“旧”代的比例
有关更多详细信息,请参阅 Oracle 的Java HotSpot Virtual Machine Garbage Collection Tuning Guide。
内存调整
-XX:MaxMetaspaceSize=###M- 最大元空间大小(在 Java 8+ 中替换 PermGen)-XX:+UseCompressedOops- 使用压缩指针(减少 64 位 JVM 上的内存开销)
日志记录和诊断
-XX:+PrintCompilation- 打印 JIT 编译器编译的每个方法-Xlog:gc*- 详细的垃圾收集日志记录(Java 9+)-XX:+TraceClassLoading/-XX:+TraceClassUnloading- 跟踪类加载/卸载-XX:+HeapDumpOnOutOfMemoryError- 在OOM错误时生成堆转储-XX:HeapDumpPath=/path/to/dumps- 指定堆转储的位置
####性能调整(诊断模式)
有些选项需要-XX:+UnlockDiagnosticVMOptions:
-XX:+LogCompilation- 详细的JIT编译日志记录-XX:CompileThreshold=#- JIT 编译之前的方法调用-XX:MaxInlineSize=#- 内联的最大方法大小(默认值:35 字节)
对于深入的性能分析,请考虑使用现代分析工具,例如:
- JDK Flight Recorder (JFR) - 低票价生产分析
- async-profiler - CPU 和堆分析器采样
斐济特定启动器选项
Fiji 的 Jaunch 启动器提供了多种适合 Fiji 需求的选项:
内存管理
--mem=<size>- 设置最大堆大小(例如,--mem=8g、--mem=75%)--gc-g1- 启用优化设置的 G1 垃圾收集器--default-gc- 取消自动 G1 GC 配置--debug-gc- 显示详细的垃圾收集信息
###运行时间选择
--python- 在Python模式下启动使用PyImageJ--no-python- 强制仅 JVM 模式(禁用 Python)
日志记录和调试
--info- 启用信息记录--debug- 启用调试日志记录--dry-run- 显示启动命令而不执行
###用户界面
--no-splash- 抑制启动画面--headless- 在headless模式下运行(完全不使用屏幕)
开发选项
--jdb- 在 Java 调试器 (jdb) 中启动
插件和更新管理
--plugins=<dir>- 使用自定义插件目录--update- 启动命令行更新程序
运行命令
--run <plugin> [<arg>]- 使用可选参数运行特定插件--edit [<file>...]- 在脚本编辑器中打开文件--main-class=<class>- 跑步习惯主类不是斐济
Jaunch 架构
Jaunch使用两级架构:
- Native Launcher(C执行文件)-查找和加载运行时库的最小本机代码
- 配置器 (Kotlin Native) - 处理复杂的配置逻辑,处理 TOML 配置文件并生成启动指令
这种分离使本机启动器保持较小且可维护,同时通过TOML文件提供增强的配置。配置器作为子进程运行并输出本机启动器执行的指令。
配置文件
斐济的Jaunch配置组织如下:
config/jaunch/fiji.toml- 主要斐济配置(包括 jvm.toml 和 python.toml)config/jaunch/jvm.toml- JVM 特定设置config/jaunch/python.toml- Python 特定设置config/jaunch/common.toml- 基本 Jaunch 配置config/jaunch/fiji.cfg- 用户覆盖(TOML 格式)
有关 Jaunch 的更多信息,请参阅Jaunch documentation。