gpt4 book ai didi

Java 垃圾收集器导致严重滞后

转载 作者:行者123 更新时间:2023-12-02 09:58:10 26 4
gpt4 key购买 nike

每次当控制台中出现以下消息时,我都会注意到游戏出现很大的延迟。

[GC (Allocation Failure) 
Desired survivor size 133693440 bytes, new threshold 7 (max 15)
[PSYoungGen: 916500K->130553K(918016K)] 1018868K->444063K(1232384K), 1.2505777 secs] [Times: user=1.87 sys=0.43, real=1.25 secs]
[Full GC (Ergonomics) [PSYoungGen: 130553K->127049K(918016K)] [ParOldGen: 313509K->314172K(555008K)] 444063K->441222K(1473024K), [Metaspace: 9374K->9374K(1058816K)], 3.7134878 secs]

我使用以下参数运行我的程序:

-Xms1024M
-Xmx2048M
-XstartOnFirstThread
-XX:+PrintGCDetails
-XX:+PrintClassHistogram
-XX:+PrintTenuringDistribution
-XX:+PrintGCApplicationStoppedTime

是否有可能减少 GC 所需的时间?如何查看 GC 收集的对象的类?

最佳答案

简单地说,减少垃圾收集时间的最有效方法就是减少垃圾量。

您可以使用像 JvisualVM(JDK 附带)这样的分析器来准确查看您的程序如何使用分配的内存以及在垃圾收集上花费了多少时间。

就游戏程序而言,您需要一致的帧速率:您需要重构代码,以便尽可能地重复使用对象,而不是创建新对象并允许它们稍后会被收集(每当不可避免地需要垃圾收集时,这将导致明显的滞后峰值)。 (不幸的是,这就是为什么像 Java 这样的内存管理语言尤其不适合游戏。)

关于Java 垃圾收集器导致严重滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55836599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com