From 228e2d1fb9a4dd438ff69926734e32ba26ad5152 Mon Sep 17 00:00:00 2001 From: IridiumMetal <17868983+IridiumMetal@users.noreply.github.com> Date: Tue, 10 Mar 2026 22:19:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BD=BF=E7=94=A8JAVA7?= =?UTF-8?q?=E5=8F=8A=E6=9B=B4=E6=97=A9=E7=89=88=E6=9C=AC=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E6=9C=AA=E8=AE=BE=E7=BD=AE=E6=B0=B8=E4=B9=85=E4=BB=A3=E5=86=85?= =?UTF-8?q?=E5=AD=98=E5=AF=BC=E8=87=B4=E6=B8=B8=E6=88=8F=E9=A2=91=E7=B9=81?= =?UTF-8?q?=E5=86=85=E5=AD=98=E6=BA=A2=E5=87=BA=E5=B4=A9=E6=BA=83=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Java 7 及更早版本使用永久代 (PermGen)​ 存储类元数据,其大小固定(默认约64-128MB),而往后的Java 8 用元空间 (Metaspace)​ 替代了 PermGen,可自动扩展。 在使用JAVA7游玩老版本怀旧时,频繁出现"java.lang.OutOfMemoryError: PermGen space"错误致客户端崩溃。 该PR永久修复了此问题,当检测到用户选择了老版本JAVA时,如果用户未未指定这个参数,自动添加了PermGen参数,扩充预分配的内存额度。 --- Plain Craft Launcher 2/Modules/ModSecret.vb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Plain Craft Launcher 2/Modules/ModSecret.vb b/Plain Craft Launcher 2/Modules/ModSecret.vb index 4cb4f2c..79bc433 100644 --- a/Plain Craft Launcher 2/Modules/ModSecret.vb +++ b/Plain Craft Launcher 2/Modules/ModSecret.vb @@ -69,6 +69,17 @@ Friend Module ModSecret DataList.Add("-Xmn" & Math.Floor(PageInstanceSetup.GetRam(McInstanceSelected) * 1024 * 0.15) & "m") DataList.Add("-Xmx" & Math.Floor(PageInstanceSetup.GetRam(McInstanceSelected) * 1024) & "m") If Not DataList.Any(Function(d) d.Contains("-Dlog4j2.formatMsgNoLookups=true")) Then DataList.Add("-Dlog4j2.formatMsgNoLookups=true") + + '为 Java 7 及更早版本自动添加永久代内存参数 + If McLaunchJavaSelected.MajorVersion <= 7 Then + If Not DataList.Any(Function(d) d.Contains("-XX:PermSize=") OrElse d.Contains("-XX:MaxPermSize=")) Then + DataList.Add("-XX:PermSize=256m") + DataList.Add("-XX:MaxPermSize=512m") + McLaunchLog("检测到 Java " & McLaunchJavaSelected.MajorVersion & ",已自动添加永久代内存参数") + Else + McLaunchLog("检测到 Java " & McLaunchJavaSelected.MajorVersion & ",用户已自定义永久代参数,跳过自动添加") + End If + End If End Sub #End Region