`

AS3内存管理实用结论

阅读更多

本文由 周戈 (DarkStone) 个人原创编写, 转载请写明来源!
联系方式: DarkStone@163.com

以下是我做的众多实验中的一小部分实验结论, 以后我会慢慢扩充

01. 如果 ABC 类里所有监视器方法都是成员方法, 那么即使 ABC 类实例的内存在用完以后被完全孤立, ABC 类实例内存当中, 所有成员索引映射的内存不会被自动回收, 所有局部索引映射的内存会被自动回收

解决办法: 将 ABC 类里所有成员索引在用完以后映射到 null, 而局部索引不用处理, 注意, 回收这些内存跟你最终是否移除事件监视器没有关系

02. 如果 ABC 类里监视器方法有一个是局部方法, 那么即使 ABC类实例的内存在用完以后被完全孤立, ABC 类实例内存当中, 所有成员和局部索引映射的内存都不会被自动回收

解决办法: 将 ABC 类里所有成员和局部索引在用完以后全部映射到 null, 注意, 回收这些内存跟你跟最终是否移除事件监视器没有关系

03. 如果一个类实例的内存已经被完全孤立, 但它没有被自动回收, 那么, 这块内存依然可以继续"工作", 意思是, 这个类里的方法还可以持续执行, 一旦这块内存被强制回收, 这块内存就不存在了, 它先前的"工作"也立即停止了

04. 如果一个局部方法(不管镶套了多少层), 有机会被调用, 那么这个局部方法对应的内存空间会自动往上进行内存重新连接, 一直重连到局部方法所在的成员方法对应的那个内存空间(其间穿越了很多代码块)

05. 任何一个内存空间都不属于其它的内存空间, 它只能被另一个内存空间里的索引映射着, 从而产生连线, 但因为这些连线是有可能被断开的, 一旦全部断开, 此内存空间就被孤立, 所以内存空间不属于也就是不包含在任何其它的内存空间里. 唯一可以属于内存空间的, 是内存空间里所有的非动态索引(因为动态索引可以被 delete 掉, 所以它不会永久属于内存空间), 而非动态索引则包括所有的成员索引和局部索引(局部索引所在的代码块虽然会在方法执行完毕以后断开, 但如果该方法被再次调用, 内存将重新连接, 这些局部索引就又连到内存空间了)

06. 内存空间当中的大量索引, 其实不占物理内存, 真正占用物理内存的, 是那些最终映射的内存, 也就是常量内存, 常量内存里是一些原始类型, 比如数字, 字符串, 布尔值等等

未完待续...

分享到:
评论

相关推荐

    VMWare+Linux AS3+Oraclce9i RAC

    通过本文的详细指导,读者可以了解到在VMWare环境下搭建Linux AS3与Oracle9i RAC集群的具体步骤和注意事项,尤其在硬件配置、虚拟机创建、操作系统安装以及网络配置方面提供了实用的经验分享。这对于希望在虚拟化...

    AS400 客户端编程手册

    Client Access Express 是IBM提供的用于连接AS/400系统的客户端软件包,旨在提供一种简便的方法来访问和管理AS/400系统上的资源和服务。该软件支持多种操作系统环境,并提供了丰富的功能,如文件传输、应用程序调用...

    AS400 Pase 基础 on as400 unix

    - **受限的内存访问**:通过控制OS/400 PASE可以访问的内存范围,增强了系统的安全性和完整性。 - **无特权指令**:仅允许使用无特权的机器指令,从而防止潜在的安全威胁。 #### 结论 综上所述,**OS/400 PASE**为...

    Linux环境数据库管理员指南

    3. **系统资源评估**:检查CPU、内存和磁盘空间是否满足DB2的最低要求。 4. **安全设置**:根据需要调整防火墙和SELinux的安全策略。 #### 四、安装DB2 Universal Database 6.1 1. **下载安装包**:从IBM官方网站...

    系统测试报告模板(绝对实用) (2).pdf

    例如,报告中提到的应用服务器、数据库服务器和客户端都使用了Intel Celeron CPU,内存均为1GB,硬盘型号为ST380817AS。 4. **测试结论** 测试结论部分总结了测试的整体效果,包括测试的效率、发现的bug分类(如...

    CreateProcessWithPipe启动进程的软件源码

    这对于需要跨进程传输数据的应用程序来说非常实用。对于熟悉VB语言的开发者而言,这是一份宝贵的参考资料,能够帮助他们在实际项目中更好地应用这些高级技术。此外,理解这些API函数的工作原理和使用方式对于提高...

    精彩编程与编程技巧-使用 WIN95 的选择目录对话框...

    ##### 3. **声明API函数** 为了能够使用Windows API函数,文章中声明了以下几个函数: - `CoTaskMemFree`: 释放内存。 - `lstrcat`: 连接两个字符串。 - `SHBrowseForFolder`: 打开文件夹选择对话框。 - `...

    基于ARM的嵌入式以太网卡接口

    4. **内存管理**:为操作系统分配足够的内存空间,确保其能够正常运行。 5. **任务管理**:定义任务优先级和调度策略,实现多任务之间的有效管理。 #### 六、结论 本文介绍了一种基于ARM微处理器S3C44B0X与以太网...

    精彩编程与编程技巧-在VB中显示动画鼠标图标...

    3. **用户权限**:某些操作可能需要管理员权限才能执行,特别是在现代操作系统中。 #### 结论 通过以上步骤,开发者可以轻松地在VB程序中实现动画鼠标光标的效果,从而提升应用程序的用户体验。虽然这种方法适用于...

    精彩编程与编程技巧-用VB快速读取TextBox第N行的数据...

    - 在实际应用中,需要注意内存管理和错误处理,确保程序的健壮性和稳定性。 - 由于涉及到API函数的调用,开发环境需要支持对这些API函数的访问权限。 #### 结论 通过以上方法,我们可以轻松实现在VB环境中快速读取...

    精彩编程与编程技巧-检测系统驱动器...

    在编程领域中,能够准确地检测系统中的驱动器类型并进行相应的操作是一项非常实用的技术。本文将详细介绍如何利用 `GetDriveType` 函数来检测系统中的驱动器类型,并通过示例代码展示如何打开和关闭CD-ROM驱动器。 ...

    基于Android的物联网控制系统的设计与实现.docx

    5. **Linux内核(LINUX KERNEL)**:基于Linux 2.6版本,提供核心系统服务,如安全、内存管理、进程管理、网络堆栈等。 #### 硬件平台设计 物联网无线测控系统的硬件平台主要包括以下几个组成部分: 1. **微控制...

    Visual Studio 2013中使用ADO访问数据库的实例.docx

    #### 3. 使用 ADO 访问数据库 - **ADO (ActiveX Data Objects)**:是一种用于访问关系数据库和非关系数据库的服务组件,广泛应用于各种开发环境。 - **ADO 在 Visual Studio 2013 中的应用**:尽管 Visual Studio ...

    系统测试报告模板(绝对实用) (2).docx

    硬件环境涉及到Intel Celeron处理器和1GB内存的计算机,以及ST380817AS 80G SATA硬盘。软件配置未具体提及,但通常包括操作系统、数据库、浏览器和其他必要的应用程序。网络环境是测试中的重要因素,因为它影响到...

    常用系统命令

    系统配置实用程序,可以禁用或启用启动程序、服务,修改系统启动选项,是系统优化和故障排除的重要工具。 **mplayer2** Windows Media Player的命令行界面版本,可用来播放音频和视频文件。 **mspaint** 画图板...

    google python风格指南(中文版).pdf

    - 对于动态类型的Python语言来说,这种工具非常实用,因为它可以帮助开发者避免一些运行时错误。 - **缺点**: - 由于Python的动态特性,pychecker可能会产生一些误报。 - 工具本身可能存在不足,需要开发者根据...

Global site tag (gtag.js) - Google Analytics