perf(runtime): 优化 Java 应用启动性能和内存管理
- 添加 JVM 启动参数提升启动速度,包括设置 TieredStopAtLevel=1 和跳过字节码验证 - 配置类数据共享 (CDS) 以减少类加载时间 - 限制堆内存大小 (Xms128m/Xmx512m) 和元空间大小防止内存过度占用 - 启用 G1 垃圾回收器并设置最大 GC 暂停时间为 50ms 优化 UI 响应 - 开启字符串去重功能节省 10%-20% 内存占用 - 添加 OpenGL 硬件加速和 macOS 菜单栏优化提升 Swing 渲染性能
This commit is contained in:
22
build.gradle
22
build.gradle
@@ -247,8 +247,28 @@ tasks.register('runBoxClient', JavaExec) {
|
|||||||
group = "run"
|
group = "run"
|
||||||
classpath = sourceSets.main.runtimeClasspath
|
classpath = sourceSets.main.runtimeClasspath
|
||||||
mainClass = "com.axis.innovators.box.Main"
|
mainClass = "com.axis.innovators.box.Main"
|
||||||
|
|
||||||
jvmArgs = [
|
jvmArgs = [
|
||||||
"-Dfile.encoding=UTF-8",
|
"-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,将菜单栏移至屏幕顶部
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user