From b20c3fc34044ab90c6cd69ed7ad0e25f1e544e3c Mon Sep 17 00:00:00 2001 From: tzdwindows 7 <3076584115@qq.com> Date: Sat, 3 Jan 2026 20:13:22 +0800 Subject: [PATCH] =?UTF-8?q?perf(runtime):=20=E4=BC=98=E5=8C=96=20Java=20?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E5=90=AF=E5=8A=A8=E6=80=A7=E8=83=BD=E5=92=8C?= =?UTF-8?q?=E5=86=85=E5=AD=98=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 JVM 启动参数提升启动速度,包括设置 TieredStopAtLevel=1 和跳过字节码验证 - 配置类数据共享 (CDS) 以减少类加载时间 - 限制堆内存大小 (Xms128m/Xmx512m) 和元空间大小防止内存过度占用 - 启用 G1 垃圾回收器并设置最大 GC 暂停时间为 50ms 优化 UI 响应 - 开启字符串去重功能节省 10%-20% 内存占用 - 添加 OpenGL 硬件加速和 macOS 菜单栏优化提升 Swing 渲染性能 --- build.gradle | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d008cdd..5a3eb90 100644 --- a/build.gradle +++ b/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,将菜单栏移至屏幕顶部 ] } \ No newline at end of file