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"
|
||||
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,将菜单栏移至屏幕顶部
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user