[转]关于垃圾回收

[url]http://chengkehan.wordpress.com/2010/11/06/%E5%85%B3%E4%BA%8E%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6/[/url]

在 Flash 中垃圾回收一直是一个困扰我们的问题,虚拟机的垃圾回收的时机是不确定的,具体的有关 Flash 垃圾回收的介绍可以在 google 上找到很多。

很多没有释放资源的原因就是交叉引用,这一点很难排查,而且一开始的征兆也不会太明显,只有等到程序运行一段时间后才会发现。这就不像是声音、连接、播放的影片剪辑等等,如果没有做这些资源的释放,将会很快的看到大量资源被占用。

所以这里要说的是尽量要避免交叉引用(有的时候还是避免不了,那就要自己小心了)以及帮助虚拟机一起来 GC。

说到帮助虚拟机一起来 GC,我觉得最好的办法就是自己手动的去处理一些释放资源的工作。我的习惯是在所有类中都会有一个 destroy 方法,在释放自己的资源以及调用内部对象的 destroy 方法。这样就是自动的迭代下去,把所有的引用都断开,这样在虚拟机进行 GC 的时候就会减轻不少负担,同样也会回收更多的内存(似乎 GC 的时候是不会全部遍历的,这样消耗太大,因此会分几次 GC 来遍历所有的资源,所以如果我们的自己的处理做得越到位,那么就可以在最少的 GC 次数内回收掉垃圾)。

而在 destroy 方法中,有一个是要注意的地方,并不是所有的当前引用对象都有要调用其 destroy 方法的,因为如果在这里调用了,和可能其他地方还会使用这个数据,就像是 C 中使用一个已经释放的指针。那么该怎么解决呢,这就牵扯到下面一些情况。

有一个方法,入参会传进来一些对象,这些对象是通过引用传进来的。如果只是使用以下,那就放心使用吧。如果还需要继续持有这个对象的引用,那我的做法是尽量只是持有这个对象的一个 ID 号,等到再次需要这个对象的时候,从数据源中再去找这个对象。这样就可以避免,把一个对象的引用甩得到处都是,也不必担心自己引用了一个已经销毁的对象,因为如果对象已经销毁了,那在数据源中应该是找不到这个对象了。

当然上面是说的理想情况,而有的时候又不得不持有一个外部对象的引用。除了更多的防错性编程(以免外部引用了对象进行的更改影响到你,或者说已经被销毁了)以及手动控制以外,在销毁的时候就不需要调用 这个对象的 destroy 方法了。我遵循的原则就是”谁创建,谁销毁”,让创建这个对象的对象来销毁它。

我在 C 中看到一个比较好的思想(至少我是这么认为的)。想 strcpy 这一类的函数,如果用面向对象的思想,完全可以在实现函数的时候使用传入的源字符串以一个长度信息,用 malloc 动态申请的空间来复制一个字符串,那这样的话就会有一个问题,这部分 malloc出来的空间似乎由谁来释放都不合适,那么解决办法就是必须手动传入一个用来保存复制字符串的空间,这就把问题抛给了函数使用者。我们其实也可以使用这个方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值