【0.98】又一种通过替换Java提升性能的思路
本帖最后由 全自动电棍 于 2025-12-5 01:10 编辑Java25实现了JEP 519,-XX:+UseCompactObjectHeaders往上一加肯定降内存占用。
真伟大啊,对象头压缩。
GC再换成分代Shenandoah,ZGC是给大内存用的,专业不完全对口,不过它们都是亚毫秒级STW,差不到哪去。
然后JetBrains家的JetBrains Runtime有一些额外的渲染相关优化,刚好有J25版本,可以试试。
就这样,换完没崩我就更新一下。
更新:差点忘了J25还有JEP 514 ,我待会研究研究能不能把AOT也利用上
错误: 加载主类 com.fs.starfarer.StarfarerLauncher 时出现 LinkageError
java.lang.ClassFormatError: Illegal field name "private.new" in class com/fs/starfarer/StarfarerLauncher
Temporary AOTConfiguration recorded: ./098rc7.aot.config
行了不用想了,被关键字混淆给草飞了,我平等的痛恨一切让代码能在JVM上跑但是过不了编译的行为。
我今天必须得尊称你一声阿楚😄💧
没炸,args待会发,但是怎么感觉分代Shenandoah打不过GenZGC。
更新:反转了,怎么感觉是GenZGC不行。
测试环境:渲染库基准测试战役gl_benchmark ,渲染库为默认参数、1080P 分辨率、-Xmx2048m -Xms2048m。
结果:
JBR J25 + GenShenandoah + UseCompactObjectHeaders + ShenandoahGCHeuristics=compact
- ********************************
- Benchmark Results (26.3 minute run):
- Average FPS: 56.5
- Minimum FPS: 37.8
- Average Frame Variance: 2.87ms
- Perceived Game Speed: 97%
- Battle Size: 790
- ********************************
gc前内存峰值(估算平均值): 1.2~1.4GB
JBR J25 + GenZGC + UseCompactObjectHeaders
- ********************************
- Benchmark Results (23.6 minute run):
- Average FPS: 49.7
- Minimum FPS: 33.1
- Average Frame Variance: 1.68ms
- Perceived Game Speed: 99%
- Battle Size: 777
- ********************************
gc前内存峰值(估算平均值): 1.7~1.8GB
Vnailla J17 + Vnailla Args(Shenandoah IU Mode + ShenandoahGCHeuristics=compact)
- ********************************
- Benchmark Results (27.6 minute run):
- Average FPS: 52.2
- Minimum FPS: 36.9
- Average Frame Variance: 2.60ms
- Perceived Game Speed: 97%
- Battle Size: 898
- ********************************
gc前内存峰值(估算平均值): 1.6GB
服了,论坛的oss不是很喜欢我,老是传不上去大文件,JBR自己下吧。
https://cache-redirector.jetbrai ... dows-x64-b176.4.zip
下好了解压出来把jbr的文件夹名改成jbr25,然后把它跟Args.txt还有Run.bat一起丢exe启动器那个目录下,如果理解不了的话我也懒得教了,人一定要有动手能力。
你最好知道Run.bat是双击启动用的。
如果你艺高人胆大其实也可以给Mikohime 097/0951换,虽然现在可能已经出J25的套件了
cy 请问这个优化方法可否彻底解决098远行星号在长时运行后卡顿以及内存占用过高的问题?关于内存占用高的原因我理解为一部分是游戏无法及时清理运行产生的缓存,但是当游戏存档到大后期拥有较多殖民地和巡逻队时关机清理内存重新进入游戏时游戏仍会发生卡顿,请问这一优化方法能否解决此类问题? 本帖最后由 全自动电棍 于 2025-12-4 22:23 编辑
起个名字好难 发表于 2025-12-4 22:00
请问这个优化方法可否彻底解决098远行星号在长时运行后卡顿以及内存占用过高的问题?关于内存占用高的原因 ...
怎么说呢,治标不治本。内存泄漏问题没那么容易解决,但理论上应该是能延后问题的发作。
感觉主要还是四字神人还有某些mod作者造的孽。
打个比方,就像那个同时灌水和放水的池子,这只是以某种方式加快了放水的效率,但还是有会满的时候。
不过对象头压缩是一个很大的优化,我感觉至少能有个10%的占用优化
大佬 读存档进不去报错帮忙看看什么问题 本帖最后由 全自动电棍 于 2025-12-4 23:12 编辑
哈哈也爱 发表于 2025-12-4 22:48
大佬 读存档进不去报错帮忙看看什么问题
看看log,我怀疑是Xstream的问题,我之前只测了战役
无法复现,尝试使用汉化版游戏复现
汉化版游戏无法复现
没有更多信息
鉴定为迷路了,QED.
全自动电棍 发表于 2025-12-4 22:55
看看log,我怀疑是Xstream的问题,我之前只测了战役
游戏反映快不少 大神研究研究更新以下哈给你{:tieba_15:}解决一下哈{:tieba_43:} 我重新安装一遍游戏 太伟大了Otto,有时间我在0.951上尝试一下 关键字混淆,Modder无法逾越的铁壁 话说只有2G显存的显卡玩, 中期基本战斗都会很卡..有什么调控的方法吗, 分辨率就那样了, 不能再少了{:tieba_12:}
只有初期那会风筝海丢矛还能算稳定, 后面多些船爆显存就开始掉帧了, 禁用了3D星球貌似帧率稳定+20{:tieba_39:} wow还有java之神,我等稳定了再回来看看,先给{:tieba_43:}{:tieba_43:}{:tieba_43:}{:tieba_43:} 完全不懂java,只能给楼主唱一首太空曼波了
用的是sst的ai汉化,好像跟楼上一样的问题 大佬,我记得pa前几天实现了修改底层,您这个与他的思路差异是什么 本帖最后由 全自动电棍 于 2025-12-5 17:13 编辑
loro 发表于 2025-12-5 14:20
用的是sst的ai汉化,好像跟楼上一样的问题
找到原因了,似乎在更高的JAVA版本中XML的默认最大嵌套深度出现了变化(或者计算方式出现了变化),由于我一直是用全新安装做的测试,所以没测出来。
尝试在Args.txt中添加这个,看看会不会好
-Djdk.xml.maxElementDeptht=256
醉梦浅笑 发表于 2025-12-5 16:24
大佬,我记得pa前几天实现了修改底层,您这个与他的思路差异是什么
只是JVM调参而已,还有“修改底层”是指?我很感兴趣 !JKrw蓝果酱! 发表于 2025-12-5 06:51
话说只有2G显存的显卡玩, 中期基本战斗都会很卡..有什么调控的方法吗, 分辨率就那样了, 不能再少了
只有初 ...
可能换电脑才是更好的办法 2g显存的电脑真的太老了,现在核显的显存都不止2g了。 全自动电棍 发表于 2025-12-5 17:05
找到原因了,似乎在更高的JAVA版本中XML的默认最大嵌套深度出现了变化(或者计算方式出现了变化),由于我一 ...
感谢大佬的修正
好像还是不行
loro 发表于 2025-12-5 18:52
好像还是不行
很奇怪,似乎没有变化
Caused by: javax.xml.stream.XMLStreamException: ParseError at :
Message: JAXP00010006: 元素 "NexOrgStg" 的深度 "101" 超过了 "jdk.xml.maxElementDepth" 设置的限制 "100"。
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:652)
at com.thoughtworks.xstream.io.xml.StaxReader.pullNextEvent(StaxReader.java:58)
... 640 more
方便提供一下mod列表和出问题的存档吗?我本地复现一下 ### 游戏信息
游戏版本: 0.98a-RC8
### 系统信息
操作系统:Microsoft Windows 11 专业版
版本:10.0.26200 暂缺 Build 26200
总可用内存:`31.82G`
**警告:未找到游戏默认Java运行时**
虚拟机参数:java.exe -noverify -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+ShowCodeDetailsInExceptionMessages -XX:+ExtensiveErrorReports -XX:+ShowMessageBoxOnError -XX:+PrintCommandLineFlags -XX:+TieredCompilation -XX:-UseCondCardMark -Xlog:async -XX:+UseFastStosb -XX:+AlwaysCompileLoopMethods -XX:TieredStopAtLevel=4 -XX:TrimNativeHeapInterval=60000 -XX:UseAVX=3 -XX:AVX3Threshold=0 -XX:UseSSE=4 -XX:+UseSSE42Intrinsics -XX:+UseCompressedOops -XX:+UseCompressedClassPointers -XX:+UseFMA -XX:+UseBMI1Instructions -XX:+UseBMI2Instructions -XX:+UseCLMUL -XX:+UseFastUnorderedTimeStamps -XX:+UseUnalignedLoadStores -XX:+UseXMMForArrayCopy -XX:+UseXMMForObjInit -XX:+UseXmmI2D -XX:+UseXmmI2F -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:ShenandoahGCHeuristics=compact -XX:ShenandoahAllocationThreshold=85 -XX:ShenandoahGuaranteedGCInterval=0 -XX:+ZeroTLAB -XX:+SegmentedCodeCache -XX:+AlwaysAtomicAccesses -XX:+UseStringDeduplication -XX:-DontCompileHugeMethods -XX:Tier0Delay=1 -XX:+UseFPUForSpilling -XX:+EnableVectorAggressiveReboxing -XX:+EnableVectorReboxing -XX:+EnableVectorSupport -XX:-AlignVector -XX:TieredOldPercentage=10000 -XX:Tier0ProfilingStartPercentage=2000 -XX:IncreaseFirstTierCompileThresholdAt=99 -XX:InterpreterProfilePercentage=99 -XX:+UseVectorCmov -XX:+UseVectorStubs -XX:ReferencesPerThread=0 -XX:MaxGCPauseMillis=10 -XX:-EnableThreadSMRStatistics -XX:+UseUnalignedAccesses -XX:PerMethodRecompilationCutoff=100000 -XX:ProfileMaturityPercentage=100 -XX:NmethodSweepActivity=1 -XX:ThreadPriorityPolicy=1 -XX:ReservedCodeCacheSize=256m -XX:+PrintCodeCache -XX:-UseDynamicNumberOfCompilerThreads -XX:CompilerDirectivesFile=./compiler_directives.txt -Djava.library.path=native\\windows -XX:-BytecodeVerificationLocal -XX:-BytecodeVerificationRemote -Djava.util.Arrays.useLegacyMergeSort=true --enable-preview --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.Buffer.UNSAFE=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.lang.ref=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.desktop/java.awt.Rectangle=ALL-UNNAMED --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED --add-exports=java.base/sun.nio.ch=ALL-UNNAMED -Xmx12288m -Xms12288m -Xss4m -Dcom.fs.starfarer.settings.paths.saves=..\\saves -Dcom.fs.starfarer.settings.paths.screenshots=..\\screenshots -Dcom.fs.starfarer.settings.paths.mods=..\\mods -Dcom.fs.starfarer.settings.paths.logs=. -classpath janino.jar;commons-compiler.jar;commons-compiler-jdk.jar;starfarer.api.jar;starfarer_obf.jar;jogg-0.0.7.jar;jorbis-0.0.15.jar;json.jar;lwjgl.jar;jinput.jar;log4j-1.2.9.jar;lwjgl_util.jar;fs.sound_obf.jar;fs.common_obf.jar;xstream-1.4.10.jar;txw2-3.0.2.jar;jaxb-api-2.4.0-b180830.0359.jar;webp-imageio-0.1.6.jar com.fs.starfarer.StarfarerLauncher
堆栈初始大小(`-Xms`):`12288m`
堆栈最大大小(`-Xmx`):`12288m`
### Mod信息
|Mod名称 |Mod版本 |已启用 |
|-|-|-|
|LazyLib |3.0.0 |是 |
|zz GraphicsLib |1.10.1|是 |
|MagicLib |1.5.6 |是 |
|[天船三星海物流] |0.6.3 |是 |
|1130的蔚蓝联邦 |0.9 |是 |
|[链戍集团军]Shackles Garrison - XXVIIBattleGroup |1.1.0 |是 |
|A New Level of Confidence |40 3.3 Fast|是 |
|Adjustable Skill Thresholds |1.2.0 |是 |
|AdvancedGunneryControl |1.20.0|是 |
|AI Tweaks AI 改修 |2.1.12|是 |
|Amazigh锻船厂 |1.5.1 |是 |
|AoTD - Dreams of Past |3.0.4 |是 |
|AoTD - Seats of Power |2.0.10|是 |
|AoTD - Virtue Of Society |1.3.3 |是 |
|AoTD- Vaults of Knowledge |4.0.4 |是 |
|Aptly Simple Hullmods |2.1.2c|是 |
|Arma Armatura |3.2.5 |是 |
|ArmaA - Anime |1.1 |是 |
|Ashlib |1.4.2 |是 |
|Astral Ascension |1.2.7 |是 |
|atreg的头像包扩展|1.5.0 |是 |
|Building Menu Overhaul |1.2.0 |是 |
|CTB-星际小卖部 |0.5.4e-fix|是 |
|CuratedShips |2 |是 |
|Customizable Star Systems |3.0.2 |是 |
|D-MOD Services |3.0.1 |是 |
|Diamond |1.75 |是 |
|ED Shipyards |2.6.8 |是 |
|Emergent Threats 威胁渐显 |1.1.7 |是 |
|Emergent Threats 威胁渐显: 第九战斗群 复兴 |1.1.7 |是 |
|FarsightDrive |0.4.1.6 |是 |
|FSF军事公司|5.0rc3|是 |
|Industrial.Evolution |4.0.i |是 |
|J GEEK Federation |1.1.0 |是 |
|Junk Yard Dogs |3.6.2 |是 |
|Kazeron 海军 |1.7.0 |是 |
|Leading Pip |1.10.2|是 |
|Lukas的随手之作 |2.6.10|是 |
|LunaLib |2.0.3 |是 |
|More Combat Terrain Effects 更多战斗地形效果|1.13.1a |是 |
|Musashi Manufactorum |1.4.4 |是 |
|NEON's ship pack |3.0.2 |是 |
|omega_core_drop |1.0 |是 |
|Particle Engine |0.10.1|是 |
|Phillip Andrada:加油站经理 |1.14.1aa|是 |
|PMMM 海盗超绝迷你船包 |1.7.7 |是 |
|PMMMVE 海盗超绝迷你船包原版修改 |1.0 |是 |
|Privateering - Commission Overhaul 私掠活动 - 雇佣协议重制|1.0.4 |是 |
|Progressive S-Mods 经验内插 |1.2.0 |是 |
|QoL Pack 生活质量工具包 |1.4 |是 |
|Quality Captains 高质量舰长 |1.7.0 |是 |
|Robben的舰船吐槽记录 |0.9 |是 |
|Scan Those Gates 扫描那些星门 |1.5.7 |是 |
|Seeker - 未知接触 |0.6.5-1 |是 |
|Ship Mastery System 舰船精通系统 |2.0.8 |是 |
|Special Hullmod Upgrades |1.6 |是 |
|SpeedUp |1.2.2 |是 |
|Station Augments 空间站增强 |2.3.0 |是 |
|Stellar Networks |3.3.0 |是 |
|TheDarkSix的舰船武器包 |1.62 |是 |
|Wide Horizons |1.3.0c|是 |
|Xinghuo legend 星火传奇 |0.14 |是 |
|Zovetry Portrait Pack |1.0.5 |是 |
|zz BoxUtil |1.4.9 |是 |
|万泽时代:Tinysaurus的原版万泽扩展 |1.2 |是 |
|世界之树科研殖民地 |1.11.1|是 |
|临界体 - 定制、可升级的船插 |2.0.1 |是 |
|义体改造 |0.3.3 |是 |
|乐园残响 |7.1.1 |是 |
|人之领历史协会|0.4a |是 |
|人之领开拓者扩展 |0.0.23|是 |
|伽马大战争-动荡不息 |0.1.0 |是 |
|光环动力舰船工业 |1.7.0 |是 |
|势力争霸 |0.12.1b |是 |
|北极星之首 |0.4.2 |是 |
|十三战斗群 |0.1a |是 |
|博尔肯基金会 |0.8.1 |是 |
|卡特贸易公司 |2.8 |是 |
|卢德骑士团 |1.4.0 |是 |
|古代武器包 |0.1.9 |是 |
|古达兰慕 |0.27.2|是 |
|地貌改造 & 空间站建设 |9.0.12|是 |
|墨汁的mod溯源 |0.1.0a|是 |
|大豆船包 |0.1.98.7|是 |
|天工联合船舶设计局 |2.2 |是 |
|天苑四-行星联合实业 |1.0.1 |是 |
|女巫秘城 |1.0c |是 |
|幅能光标 |1.4.0 |是 |
|幽灵部队 |1.1.3 |是 |
|应答器关闭许可 |1.2.4.1 |是 |
|彻底扫描星系 |1.2.3.1 |是 |
|战斗不结束修复补丁 |0.0.1a|是 |
|战斗骚话 |1.15.0|是 |
|战机拓展 |2.0.0 |是 |
|扩展纪元扩展 |2.0.5 |是 |
|控制台 |2025.03.30|是 |
|新舰异闻 |0.5.2.2 |是 |
|星海自律 |0.9.3 |是 |
|星海集群 |1.13.7b |是 |
|星系检索网络汉化 |3.1.6 |是 |
|星际帝国 |2.6.9 |是 |
|普拉斯里蒂废品大师 |0.6.9 |是 |
|暗影重建局 (WISP版) |0.9.6-rc1-Wisp-007|是 |
|更大的殖民地 |2.1.b |是 |
|未知星域 |3.0.3 |是 |
|机械教会 |0.2 |是 |
|机械虚空船坞 |0.70a |是 |
|梦境故事 |0.1.4c|是 |
|楼兰军工综合体 |2.2.4 |是 |
|武器&战机逆向实验室 - 工业革命 扩展 |1.0.1 |是 |
|泰兰船包 |1.4 |是 |
|海盗拓展 |1.8.8 |是 |
|清理星域 |0.2.6 |是 |
|火炬舰队与致命军武 cn维护版 |0.19 |是 |
|真正的舰船们 |0.0.4a|是 |
|碧蓝档案头像包 |1.14 |是 |
|秘甘智库 |0.6.0 |是 |
|穿越者设计局 |1.11.1|是 |
|系统标识 |0.1.9 |是 |
|绿皮星域 中文版 |0.61 |是 |
|绿皮星域骤雨扩展 |0.01 |是 |
|羊头航务局 |1.10.10 |是 |
|航母现代化 |1.1.5 |是 |
|舰船/武器拓展 |1.16.6|是 |
|蓝冰河势力扩展 |1.0.2 |是 |
|蜂群 |1.3.2 |是 |
|详细战斗报告 |5.4.2 |是 |
|超空间跳跃 |2.6.0 |是 |
|超级欧米茄蓝图包 |19.19 |是 |
|远行联盟 |1.1.2 |是 |
|迷失超级船包 |2.0.4a|是 |
|邻家邮政 |0.9.1 |是 |
|重生 |2.5.0 |是 |
|重生规则拓展 |1.3.0 |是 |
|锡罕帝国 |3.0.1 |是 |
|AoTD - Question of Loyalty |2.0.5 |否 |
|Neutrino Detector Mk.II |1.4.4 |否 |
|What we left behind 我们遗落之物 |4.3.7c|否 |
|机械虚空船坞 骤雨扩展补丁 |0.62 |否 |
(以上内容由 远行星号 报错信息收集工具 自动生成,生成工具版本 `1.1.2`).
有点多,要是不方便就算了 意思是自MikoSector之后我们又迎来了OttoSector
全自动电棍真乃神人也 全自动电棍 发表于 2025-12-5 17:05
找到原因了,似乎在更高的JAVA版本中XML的默认最大嵌套深度出现了变化(或者计算方式出现了变化),由于我一 ...
这里的 xml 参数是不是不太对,多了个 t?
本人在测试高版本的 java 的时候也遇到过了 xml 解析问题,加了这个参数是可以正确解决问题的
页:
[1]