|
|
1
25
是的,这是可能的,但这通常是个坏主意。GC应该比您更清楚什么时候是运行的好时机,并且除了一个非常特殊的情况,比如您刚刚使用了500MB内存,需要尽快将其取回,您不应该自己调用GC。
this post 格兰特·斯金纳。 |
|
|
2
15
有一个新的API告诉GC这可能是一个收集数据的“相对好的时刻”。 有关详细信息,请参阅Adobe API文档 System.pauseForGCIfCollectionImminent 还有这个 Adobe blog post 该方法采用“紧迫性”论证;基本上,如果您真的希望收集器运行,即使自上次收集以来没有太多活动(当前以分配的字节衡量),并且您输入了大量数据(接近1.0),您也可以输入少量数据(接近0.0)如果您只希望在我们已经接近采集点的情况下发生采集暂停。
一个非常重要的细节:这个新的API同时受到版本和调试器Flash运行时的支持。这使其优于调用System.gc()。 |
|
|
3
8
对于所有当前发布的版本,System.gc()仅适用于Flash player和ADL(AIR应用程序的调试环境)的调试版本。FlashPlayer10Beta目前在所有版本中都能正常工作。 我同意Davr的观点,这是个坏主意。运行时通常比您有更好的想法。
|
|
|
4
3
正如其他人所说:不要尝试手动GC,虽然有黑客攻击,但并不安全。 回收 对象时,您将节省大量内存。 例如,这可以应用于位图数据(清除并重用)、粒子(从显示中删除并重用)。 |
|
|
5
3
我有一个评论说,你永远不应该做GC手动。我习惯于C++中的手动内存管理,我更喜欢ScReDTPR,而不是GC。 有一种特殊情况,我无法找到除GC之外的其他解决方案。请考虑:我有一个DataCache类,它的工作方式是为某些方法调用保留结果对象,这些方法调用在刷新/接收数据时发送更新的事件。刷新缓存的方式是,我只是从缓存中清除所有结果,然后发送事件,该事件会导致任何剩余侦听器重新请求其数据,超出范围的侦听器不应重新请求,从而清除不需要的结果。但是很明显,如果我不能强制所有仍然挂起等待GC立即清理的侦听器在发送“再次询问数据”事件之前,这些挂起的侦听器将不必要地再次请求数据。因此,由于AS3没有析构函数,所以我无法移除VentListener,因此我看不到比强制GC确保不再有悬空侦听器更简单的解决方案。
当包含此datagrid的弹出窗口关闭时,您可能希望绑定被销毁。很显然,他们生活得很好。嗯,当一个对象正在运行时,flex不应该破坏它的所有绑定(也就是eventlisteners)吗 标记 用于GC,因为最后一个引用已删除。这对我来说可以解决问题。 至少这就是为什么我认为,我仍然是Flex的初学者,所以任何想法都将受到赞赏。 |
|
|
6
3
|
|
|
7
0
如果有必要,打电话给gargabe催收员可能会很有用。。。所以,你必须小心如何以及何时去做,但毫无疑问,有时是必要的。
|
|
|
8
0
回收并没有真正的帮助。我使用了一个加载器,每500毫秒重复加载相同的jpg。任务管理器仍报告内存持续增加。 这里提供了久经考验的解决方案。 |