- 浏览: 262748 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
sflscar:
太好了,我搞了一下午,批量插入,第一个参数个数没对sql批量导 ...
redis pipe大数据量导入 -
赵青青:
那 entity.hbm.xml 文件中的主健策略怎么配置 ...
Hibernate 和 Access -
GapStar:
换成flash IconCellRenderer.as应该怎么 ...
DataGrid 中加入图标 -
binbinyouli:
不好意思。我把楼主注释掉得部分打开了。但是我看楼主有传递对象的 ...
Flex Flash 和JAVA 在Socket交互 -
binbinyouli:
不知道前两位评论人时怎么做得。我再做这个例子的时候出现了安全沙 ...
Flex Flash 和JAVA 在Socket交互
概述:AVM2理论上是自带垃圾回收机的,但是具体何时进行垃圾回收,理论上非人为所能控制,而我们若要强制启用垃圾回收机,则需要用一些非正规手段,比如如下会提到的手段。关键字:垃圾回收
核心hack技术
批注:所谓强制执行垃圾回收机,是指通过故意使swf在运行时出错,然后throw出错误,而同时通过catch error来继续运行swf文件。而垃圾回收机则会在swf抛出错误的时候,被强制执行一次,以清除内存中无效的数据占用,减少资源的消耗。
我当初也是这么理解的,不过从“费gg”处所学到的,包括自己所测试的,并不是所有的error throw都能触发垃圾回收机,而也只局限于某些特定的error,而上文的例子中的这一error恰为其中的一种error类型。
try{
new LocalConnection().connect("MoonSpirit");
new LocalConnection().connect("MoonSpirit");
}catch(error : Error){}运行上述代码,可强制执行一次垃圾回收机。具体测试:
分别用initNoBitmapDataView()和initBitmapDataView()进行10k个举行元素创建
测试结果:
1.1不使用BitmapData 内存占用 40M
2.1使用BitmapData 依旧内存占用 40M!
原因分析: 虽然_sqrList被设为null,但是原先被_sqrList所引用的1w个sprite数据依旧在内存中存在,虽然AMV2自带垃圾回收机,但是何时进行垃圾回收是不确定的。而要强制执行垃圾回收机,则要用上文提到的hack手段
2.2使用BitmapData + 垃圾回收hack 内存占用 12M
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.net.LocalConnection; public class MoonSpirit extends Sprite {
private const SQR_AMOUNT : int = 10000; //方块数量
private var _container_sp : Sprite; //容器sprite
private var _sqrList : Array; //所有方块的引用
public function MoonSpirit() {
init( );
}
private function init( ) : void{
_container_sp = new Sprite( );
addChild(_container_sp);
//initNoBitmapDataView( );
initBitmapDataView( );
}
//初始化 通过通常手段 显示
private function initNoBitmapDataView( ) : void {
layoutTenThousandSqr( );
}
//初始化 通过BitmapData快照 显示
private function initBitmapDataView( ) : void {
layoutTenThousandSqr( );
var myBitmapDataObject : BitmapData = new BitmapData(150, 150, false, 0xFF0000);
var myImage:Bitmap = new Bitmap(myBitmapDataObject);
addChild(myImage);
unLayoutTenThousandSqr( );
_sqrList = null;
doClearance( );
}
private function layoutTenThousandSqr( ) : void {
_sqrList = new Array( );
for(var i : int = 0; i < SQR_AMOUNT; i++){
_sqrList.push(new Sprite());
_sqrList[i].graphics.beginFill(0xff0000);
_sqrList[i].graphics.drawRect(0,0,100,100);
_sqrList[i].graphics.endFill();
_container_sp.addChild(_sqrList[i]);
}
}
//不显示
private function unLayoutTenThousandSqr( ) : void {
for(var i : int = 0; i < SQR_AMOUNT; i++){
_container_sp.removeChild(_sqrList[i]);
delete _sqrList[i];
}
}
//精髓,垃圾回收机强制调用
private function doClearance( ) : void {
trace("clear");
try{
new LocalConnection().connect("foo");
new LocalConnection().connect("foo");
}catch(error : Error){
}
}
}
}
本文来源于 冰山上的播客 http://xinsync.xju.edu.cn , 原文地址:http://xinsync.xju.edu.cn/index.php/archives/177
评论
private function doClearance( ) : void {
trace("clear");
try{
new LocalConnection().connect("foo");
new LocalConnection().connect("foo");
}catch(error : Error){
}
}
---
当中的foo是代表什么?在哪定义的?
发表评论
-
Flex中使用JSon
2009-10-10 19:58 1104这是我从一位网友里看的例子,发现用Json真的很方便。附件中是 ... -
Flex 预载界面美化 Flex's preloader is not so flex
2009-03-03 16:24 3084转自: http://riashanghai.com/zh-h ... -
Flex 嵌入资源
2009-03-03 16:22 1323http://www.adobe.com/cn/devnet/ ... -
Flex中的嵌入资源(Embedding Assets)
2009-03-03 16:19 1326转自:http://hi.baidu.com/sw ... -
如何监听Canvas上滚动条的出现或隐藏 Quick Tip: How to Monitor the
2009-03-03 15:41 1858转自:http://riashanghai.com/zh-ha ... -
Flex中Event与Bindable
2009-03-03 15:37 4145转自:http://liguoliang.com Event: ... -
ResourceBundle用法
2009-03-03 11:18 3002ResourceBundle 用于解释资源文件。 1.新建 ... -
用Point+Graphics画虚线
2009-03-03 10:57 1525Graphics为我们提供了moveTo/lineTo,dra ... -
一个flex例子(自定义download progress bar的)
2009-03-03 10:52 2405预览:http://www.onflex.org/flexap ... -
同一个Column,不同ItemEditor
2009-03-03 10:19 1275这类需求比较少见,不过还是被我碰上了,哈哈。AdvancedD ... -
自定义Flex的Loading界面
2009-02-25 17:37 4621这个方法网上已经有人写过例子... 在这里我只是自己做个实例并 ... -
Flex Metatag
2009-02-25 14:15 1450Have you ever used [Bindable] i ... -
flex:嵌入应用程序资源
2008-12-29 14:56 1141可以在 Adobe® Flex™ 应用程序中嵌入各种类型的资源 ... -
Flex开发自定义控件(基础篇)
2008-12-29 14:53 1444前期准备: 点击File菜单 -> New -> ... -
Flex Cookbook --13.11深度拷贝ArrayCollection
2008-12-29 14:51 224813.11 深度拷贝一个ArrayCollection集合13 ... -
Flex 中的元数据标签
2008-12-29 14:45 1354Flex 元数据标签——告诉编译器如何编译 虽然多数F ... -
Flex Flash 和JAVA 在Socket交互
2008-12-29 14:40 7175首要要了解.两种语言是 ... -
AS3的网页参数处理
2008-12-29 14:36 1251我们一般向网页swf文件传入参数有两种方式,一种是URL如: ... -
Cookie类
2008-12-29 14:36 999[AS3]Cookie类 [AS2]Flash版本的Cooki ... -
Flex学习笔记_09 数据绑定_晋级篇
2008-12-29 14:34 9079.2.1 函数和类级别的绑定 [Bindable]标签打使用 ...
相关推荐
Flex垃圾回收机制是ActionScript 3.0中的一个重要概念,主要应用于Adobe Flex应用程序的内存管理。在Flex开发中,理解并掌握垃圾回收的工作原理对于优化应用程序性能和避免内存泄漏至关重要。 1. **垃圾回收的基本...
Adobe官方的Flex垃圾回收机制说明,理解了这个文档,将真正理解ActionScript的垃圾回收机制,编写高性能的Flex程序
这很好理解,每个 Flex 应用总有一个 Application 的入口被称为根节点(Root),垃圾收集器从根节点开始遍历每个对象,对可达对象标记为“有效”(有一种例外就是弱引用,后面的章节详谈)。而在这棵树之外的孤岛...
一个跟踪过程,它传递性地跟踪指向当前使用的对象的所有指针,以便找到可以引用的所有对象,然后重新使用在此跟踪过程中未找到的任何堆内存...公共语言运行库垃圾回收器还压缩使用中的内存,以缩小堆所需要的工作空间。
Flex中的itemRenderer是一种关键的组件渲染机制,它允许开发者自定义列表或数据集项的显示方式。在Flex应用中,特别是在处理数据集如ArrayCollection时,我们常常需要以不同的方式展示每个项目,例如图片、文本或者...
### FLEX强制类型转换 在Flex开发中,类型转换是一个非常重要的概念,它涉及到如何将一个类型的对象转换为另一个类型的对象。特别是在ActionScript 3(AS3)中,强制类型转换是实现某些功能的关键手段之一。本文将...
【Flex面试题】Flex面试题主要涵盖Flex的基础概念、开发框架、MVC模式的应用、内存管理、垃圾回收机制、前端性能优化以及与后端通信等多个方面。以下是对这些知识点的详细解析: 1. AS2与AS3的区别: AS2...
Flex事件机制是Adobe Flex应用程序开发中的核心组成部分,它允许组件之间进行有效的通信和交互。对于初级Flex程序员或爱好者来说,理解这一机制至关重要。在本文中,我们将深入探讨Flex事件的各个方面,包括事件流、...
Flex的安全机制之一就是沙箱机制,它限制了SWF文件能够访问的资源范围,以防止恶意代码的执行。沙箱机制将不同的SWF文件隔离在各自的“沙箱”内,这样即使其中一个SWF文件被攻击者利用,也不会影响到其他SWF文件。 ...
Flex4.5事件机制是Flex应用程序开发中的核心组成部分,它基于ActionScript 3.0的事件模型,并且遵循DOM3级事件规范。事件机制使得开发者能够轻松响应用户交互和系统事件,为Flex程序员提供了强大且直观的处理工具。 ...
理解并管理Flex中的垃圾收集机制对于优化应用性能至关重要。 在Flex中,垃圾收集是自动进行的,由ActionScript虚拟机(AVM)负责。它的主要目标是回收那些不再有引用指向的对象所占用的内存。当一个对象没有任何...
总之,理解 FlashPlayer 的垃圾回收机制和 Flex 中对象引用的管理是防止内存泄露的关键。通过谨慎处理对象引用、正确管理事件监听器和利用调试工具,可以有效地减少 Flex 应用中的内存泄露问题,从而提高应用的性能...
这时,可以采用非标准的强制垃圾回收策略,即通过故意引发错误并捕获它来触发垃圾回收: ```actionscript package util { import flash.net.LocalConnection; import flash.system.System; public class ...
### Flex事件机制详解 #### 一、事件简介 在Flex框架中,事件是应用程序与用户交互的核心机制之一。它可以由多种触发源启动,包括但不限于用户的输入(如键盘按键、鼠标点击)、外部数据加载完成(例如WebService...
Flex ActionScript3.0事件机制的Demo, 举例说明了事件的三个阶段,事件的派发,事件的侦听,事件的拦截,自定义事件等相关知识点. 以上知识点在Demo中都有体现,初学者请仔细分析代码,加强理解,多调试、修改、验证以加深...
处理完成后,事件对象会被垃圾回收,以释放内存资源。 7. 事件处理的最佳实践 - 尽量使用事件监听器接口(`IEventListener`)而不是直接将处理函数作为监听器,这样可以避免内存泄漏。 - 在不再需要监听事件时,...
### Flex事件机制详解 #### 一、引言 Flex是一个强大的框架,用于构建高性能的Web应用程序。对于初学者而言,理解和掌握Flex中的事件机制是非常重要的一步。本文将深入探讨Flex事件机制的基础概念、事件注册通道、...