我知道编辑这个网站吗?

启动器

Jaunch是用于启动Java和Python程序的本机应用程序,包括ImageJFiji

简介

启动器是一个本机执行文件,其目的是启动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 中:

  • 您可以通过EditOptionsPython…对话框编辑max-heap值。
  • 您可以使用 EditOptionsMemory 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 字节)

对于深入的性能分析,请考虑使用现代分析工具,例如:

斐济特定启动器选项

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使用两级架构:

  1. Native Launcher(C执行文件)-查找和加载运行时库的最小本机代码
  2. 配置器 (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