gpt4 book ai didi

Java 性能逐渐下降

转载 作者:行者123 更新时间:2023-12-01 14:33:06 25 4
gpt4 key购买 nike

我有一个 Java 类,它执行以下操作:

public void slowsDownOverTime() {
for (int i=0 ; i<nIter ; i++) {
BigObject bigObject = new BigObject();
// some code here that populates big object ...
CustomSerializer.write(bigObject);
}
}

我观察到的是,随着代码迭代,序列化程序编写所需的时间越来越长。启动时,序列化程序以毫秒为单位运行;经过几万次迭代,运行需要几秒钟。

序列化程序写入的磁盘远未满,并且在发生这种情况时,正在使用的 Java 堆空间远未达到最大值。

我尽可能减少了在此周期中创建和销毁的对象的数量和大小。这基本上耗尽了我解决此类问题的工具包!

任何关于我如何理解和纠正逐渐性能下降的建议将不胜感激!

最佳答案

我认为,这是由遗漏的代码引起的(这里的一些代码填充了大对象......)。试试这个:

public void slowsDownOverTime() {
BigObject bigObject = new BigObject();
// some code here that populates big object ...
for (int i=0 ; i<nIter ; i++) {
CustomSerializer.write(bigObject);
}
}

这将始终写入相同的对象,我希望这不会降低性能。

我认为被遗漏的代码构建了一个正在被 bigObject 引用的不断增长的数据结构。 .请记住,在序列化时,Java 会深入遍历所有依赖对象并序列化所有依赖对象。所以每次迭代都会写入越来越多的数据。这可能是降低性能和使用大量磁盘空间的原因。

关于Java 性能逐渐下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59794357/

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