抱歉之前一直在忙著研究自研的沙盒遊戲,沒有及時更新~~
這下子有空了,趕緊給各位粉絲補上一份大禮。
一、問題匯入換了新電腦,配置不能說高階,至少也有中等水平。
開個原神,算上啟動動畫,到進入遊戲,差不多也就20秒
特效全高,須彌城記憶體佔用9G/16G,我一邊玩一邊看番劇都不成問題
玩個MC大型整合包(以新發布的地球2.0為例子,各啟動引數都是整合包預設的)
進入世界耗時高達9分鐘,這速度能忍?
而且記憶體佔用量20G/16G,不僅用了虛擬記憶體,而且直接把電腦獨佔了。
反正我忍不了。
於是我就開始琢磨怎麼優化這兩個問題。
參考我的上一篇優化文章我的世文章界Minecraft 1.12.2 極限優化指南
先換了阿里巴巴的龍井JVM,記憶體佔用下降到14/16G
但好像還不太夠,而且啟動速度只快2分鐘
二、解決方案於是,我換了Openj9 JVM。
第一次載入會有點慢,但無所謂,我開了啟動優化
第二次就快了,啟動速度來到了5分鐘
記憶體佔用量下降到10/16G,好多了
三、進階操作記憶體佔用量的優化基本上足夠了
那麼,還能不能讓啟動速度再快一點?
JVM角度啟動速度的優化,本質上就是依靠openj9的-Xshareclasses選項
這是一個載入快取,第一次啟動整合包時,速度不會有明顯提高
但它會快取優化資料,之後再次啟動時,載入速度就會快得多
也不會再出現進入遊戲後幾分鐘內很卡(因為傳統JVM這時候還在做JIT優化),後面才正常的情況了(尤其是在低配電腦上十分明顯)
這個引數我在上一篇文章裡已經附帶了,閱讀本文請先看看上一篇文章
但觀察下圖,你會發現,快取記憶體的空間已經滿了,這意味著,整合包的更多優化將無法被快取,也就說明, 還存在進一步優化的空間
執行java -Xshareclasses:printStats得到的結果
現在,開啟命令列
清除舊的快取
java -Xshareclasses:destroyAll在遊戲的JVM引數處新增 -Xscmx:500M(通常500M就夠用了,不夠可以再加到1G)
啟動遊戲,進入世界,跑圖五分鐘,退出遊戲
再次啟動,你會發現,只要4分鐘就能進入世界了。
這樣,我們就優化到極致了。(啟動時間10分鐘->4分鐘。記憶體佔用20GB->10GB)
可以邊打遊戲邊看番了接下來估計要備戰半期考了,考完之後可能會出一點自研次時代微體素沙盒遊戲的技術細節
VulkanMod的作者一直沒定好GBuffer的處理模板。我自己寫FSR2.0/DLSS支援,又擔心自創的GBuffer模板會不會影響作者後續開發光影支援的發揮。只能等他把GBuffer管道模板定下來了,我再合併超解析度支援啦.......









