MineCraft和堆外内存
生活随笔
收集整理的這篇文章主要介紹了
MineCraft和堆外内存
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
總覽
MineCraft是一個很好的例子,說明何時堆外內存確實可以提供幫助。 關鍵要求是:- 保留的數據大部分是一個簡單的數據結構(在我的世界的情況下,它的很多字節[])
- 堆外內存的使用可以隱藏在抽象中。
考試
我使用以下測試從零開始從種子啟動Minecraft服務器,這對于服務器來說是特別昂貴的操作。- 在server.properties中預設種子級別= 114
- 刪除世界*目錄
- 使用以下選項啟動服務器,以查看GC的工作-Xloggc:gc.log
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps - 與一位客戶聯系
- 表演 /世界村
- 執行 /全部保存
- 出口。
標準礦山Craft.io
它有兩個特別昂貴的功能:- 它在許多字節[]中緩存塊級
- 它嘗試無限制地緩存用于處理的int []。
以上測試的Censum報告如下:
高暫停時間部分是由于必須管理大型對象。離堆MineCraft
為解決此問題進行了兩項更改:- 使用堆外ByteBuffer進行長期緩存。 不安全會更有效,但不那么可移植。
- 對緩存的int []的數量設置上限。
注意:臨時int []的問題僅在將大量數據移出堆之后才對我可見。 解決最大的問題將揭示更多的快速修復問題。
相同測試的Censum報告如下所示: 還有一些過早的升級,即可以進行進一步的改進,但是您可以看到該應用程序正在花錢。結論
使用堆外內存可以幫助您馴服GC暫停時間,尤其是如果您的大部分數據都位于可以輕松抽象的簡單數據結構中時。 這樣做還可以幫助您揭示其他一些簡單的優化方法,可以用來提高性能的一致性。
腳注
許多組織將性能視為增強功能和可選功能,但是,如果您灌輸要求合理性能的文化,而不能滿足此要求則是一個錯誤,那么性能問題很可能會得到解決。 cf https://bugs.mojang.com/browse/MC-56447使用的來源
- 用于測試的源在這里可用。 https://github.com/peter-lawrey/MineOffHeap
- 生成的日志在此處可用。 https://github.com/peter-lawrey/MineOffHeap/tree/master/logs
翻譯自: https://www.javacodegeeks.com/2014/06/minecraft-and-off-heap-memory.html
總結
以上是生活随笔為你收集整理的MineCraft和堆外内存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel2013电脑版下载(excel
- 下一篇: 盈通 RX 7800/7700 XT 樱