为什么Dart在一段时间后变得很慢?

时间:2014-11-11 10:50:45

标签: memory garbage-collection dart hang

我们在Dart遇到了一些问题。似乎在一段时间后垃圾收集器无法清除VM中的内存,因此应用程序会挂起。有这个问题的人吗?有没有内存限制?

2 个答案:

答案 0 :(得分:2)

您应该重复使用对象而不是创建新对象。你应该使用池模式:

http://en.wikipedia.org/wiki/Object_pool_pattern

小心帆布及其适当的破坏。

另一份GC绩效文件:

http://blog.tojicode.com/2012/03/javascript-memory-optimization-and.html

http://qt-project.org/doc/qt-5/qtquick-performance.html

答案 1 :(得分:2)

  

是否有内存限制?

是。 Dart显然以最大尺寸运行,可以在发布时配置:

(以下内容适用于所有垃圾收集语言......)

如果您的应用程序开始耗尽空间(即堆正在慢慢归档GC无法删除的对象),那么您可能会遇到GC越来越频繁运行的恶劣情况,并设法回收每次记忆越来越少。最终你的内存耗尽,但在此之前,应用程序变得非常慢。

解决方案通常是执行以下一项或两项操作:

  • 查找导致内存耗尽的原因。通常不是您分配太多对象。相反,典型的原因是通过应用程序构建的某些数据结构,仍然可以访问不需要的对象。

  • 设置GC的“快速死亡”调整选项....如果可用。例如,Java垃圾收集器可以配置为测量垃圾收集所花费的时间。 (GC开销。)当GC开销超过预设比率时,Java虚拟机会抛出OutOfMemoryError以“拔插”。

相关问题