perf(runtime): 优化 Java 应用启动性能和内存管理

- 添加 JVM 启动参数提升启动速度,包括设置 TieredStopAtLevel=1 和跳过字节码验证
- 配置类数据共享 (CDS) 以减少类加载时间
- 限制堆内存大小 (Xms128m/Xmx512m) 和元空间大小防止内存过度占用
- 启用 G1 垃圾回收器并设置最大 GC 暂停时间为 50ms 优化 UI 响应
- 开启字符串去重功能节省 10%-20% 内存占用
- 添加 OpenGL 硬件加速和 macOS 菜单栏优化提升 Swing 渲染性能
This commit is contained in:
2026-01-03 20:13:22 +08:00
parent d2e40744cf
commit b20c3fc340

View File

@@ -247,8 +247,28 @@ tasks.register('runBoxClient', JavaExec) {
group = "run"
classpath = sourceSets.main.runtimeClasspath
mainClass = "com.axis.innovators.box.Main"
jvmArgs = [
"-Dfile.encoding=UTF-8",
"-Djava.system.class.loader=com.axis.innovators.box.plugins.BoxClassLoader"
"-Djava.system.class.loader=com.axis.innovators.box.plugins.BoxClassLoader",
// --- 1. 提升启动速度的关键 ---
"-XX:TieredStopAtLevel=1", // 最有效的启动优化:只进行一级编译,不进入长时间的深度优化,显著缩短冷启动时间
"-Xverify:none", // 跳过字节码验证(注意:如果插件系统有安全性要求请移除此项)
"-Xshare:auto", // 开启类数据共享 (CDS),减少类加载时间
// --- 2. 限制内存占用 ---
"-Xms128m", // 初始堆大小根据你的应用复杂度可调128m 对普通桌面应用足够)
"-Xmx512m", // 最大堆限制,防止 Java 无节制占用系统内存
"-XX:MaxMetaspaceSize=128m", // 限制元空间(存放类信息),防止非堆内存泄露
"-XX:+UseStringDeduplication", // G1回收器下开启字符串去重可节省 10%-20% 的内存占用
// --- 3. 优化 UI 响应与 GC ---
"-XX:+UseG1GC", // 使用 G1 垃圾回收器,适合有界面交互的程序,减少停顿
"-XX:MaxGCPauseMillis=50", // 目标 GC 停顿时间 50ms保证 UI 动画不卡顿
// --- 4. 针对 Swing 的渲染优化 (可选) ---
"-Dsun.java2d.opengl=true", // 在支持的系统上启用 OpenGL 硬件加速(通常能让 UI 更流畅)
"-Dapple.laf.useScreenMenuBar=true" // 如果是 macOS将菜单栏移至屏幕顶部
]
}