ActionScript 3.0 :: Memory Management With An Object Pool
Sep 8, 2009
I've been trying to figure out how Flash does its memory management regarding object declarations but haven't found anything that describes declarations themselves. [code]Basically I want a pool of declared variables that get instantiated only when a certain type is set. I'd have logic in other functions that figures out what the type is and then does certain things to it, but for now I just wanted to know what kind of memory management Flash does with something like this. Does it do nothing until I actually instantiate it (= new Object()) or will space be set aside once I simply declare it (someObj:Object)?
View 2 Replies
Similar Posts:
Aug 2, 2007
I'm making an isometric game and I need to know which takes less memory for scrolling, making everything invisible that you can't see? Like if(!this.base.hitTest(worldHitter))this._visible = false; Or would it be better to remove the movieclips unseen and then reattach them when i should see them?
View 2 Replies
Aug 29, 2008
I previously asked about some FLV files that I was loading externally, and having trouble with memory being released. Having sort of solved this, I am having the same problem with loading external resources and then getting them to be cleared out of memory when I'm done with them. I have seen kglad mention more than once that GC in flash 9.0.124.0 is broken, but where does that leave us? I have also tried my project in FP 10, and the memory still continues to go up and up. If I load an external resource - in this case I have a class that builds a VR room with papervision - and then close it, set it's instance to null, my memory never goes down.
This is a total guess, but could it have anything to do with using Tweener in my project? Is there any way that the Tweener class could be keeping some of my objects in memory and keep them from being GC'd? I am using weak references in my listeners, setting any variable I can find to null... I can get over how frustrating this is to just see memory go up and up but find no reason. The class I am using also uses a few subclasses to build itself, but I end up with one instance of my VR on the stage. If I have set that instance to a name - myVR - and then removeChild(myVR) from the stage and set the name to null - that should do it right? Boy, this is frustrating.
View 3 Replies
Nov 7, 2008
I have done a lot of searching / reading to find out how to clear my memory. But I still can't really work out how to clear the memory, it just never seems to come down. I have a few MovieClips that contain other MovieClips with pngs inside them being added to the stage.
As fare as I can tell all Event listeners are removed and refrences I remove the clip, with removeChild I "null" the variable I am using the "LocalConnection()" hack to try and force a clean up, but no movement on the memory count. Are there any examples of a *.png being added and removed from the memory?
View 7 Replies
Nov 10, 2009
I was recently profiling my application that uses Degrafa States in the skins and noticed that doing so uses more memory than I expected. Between the SetProperty and State, they were using about 10% of the total used application memory.
Would it be better to use css for the state changes and a new skin for each state? or Are there some simple tips to reducing the memory footprint of degrafa?
View 1 Replies
Apr 21, 2010
the Flash Virtual Machine relies on garbage collection by using reference counting and mark and sweep (for good coverage of these topics, check out Grant Skinner's article and presentation). And yes, Flash also provides the "delete" operator, which can (unfortunately only) be used to remove the properties of dynamic objects.
What I want to know is how to make it so that Flash programs don't continue to consume CPU and memory while running in the background (save loading content or communicating remotely, for example). The motivation for this question comes in part from Apple's ban on cross compiled applications (in its SDK 4) on the grounds that they do not behave as predicted with the multitasking feature central to iPhone OS 4. My intention is not only to make Flash programs that will 'pass muster' as far as multitasking in iPhone OS 4, but also to simply make better (behaving) Flash programs.
Put another way, how might a Flash application mimic the multitasking feature of iPhone OS 4? Does the Flash API provide the means for a developer to put their applications to 'sleep' while other programs run, and then to 'awaken' them just as quickly?
In our own program, we might do something as crude as detecting when the user has been idle (no mouse motion or key press) for (say) four seconds:
var idle_id:uint = setInterval(4000, pause_program);
var current_movie_clip:MovieClip;
var current_frame:uint;
[code]....
what's the best way to detect that an application should be shelved? And, more importantly, is it possible for Flash Player to detect that some of its running programs are idle, and to similarly shelve them until the user performs an action to resume them?
View 2 Replies
Nov 24, 2011
I am a flex programmer but i had nothing to do for handle manage memory in my projects. I think lack of memory management is reason for loading lag of swf file. Can any one help me to how to handle manage memory in flex/ as3 codes.
View 1 Replies
Jul 19, 2010
In AS3, after I've removed a display object container B from another display object container A and deleted all the references to B in A, does that mean that all memories previously held in B will all be released too or do I have to manually delete all the references to objects in B before I can delete B in A in order to free all the memory space held?One more question. I was kind of confused of when to use the delete statement and when to set a variable to null.
View 1 Replies
Aug 18, 2009
Hi guys, I'm wondering whether any of you have any opinions on whether you instantiate a Loader into an instance variable, or whether you declare a local variable to hold the Loader object.
I'm coming at this from a memory management / garbage collection perspective.
I only need the Loader object to load the file and register the event listeners. So I don't really want an object-wide instance variable to hold this loader object (which is what Adobe does in most of their examples), since I can always access the loader.data through the event's target property.
[Code]...
View 2 Replies
May 16, 2010
I'm developing an AS3 application which has some memory leaks I can't find, so I'd like to ask some newbie questions about memory management.Imagine I have a class named BaseClass, and some classes that extend this one, such as ClassA, ClassB, etc.I declare a variable:
myBaseClass:BaseClass = new ClassA();
After a while, I use it to instantiate a new object:
myBaseClass = new ClassB(); some time after
myBaseClass = new ClassC();
and the same thing keeps happening every x millis, triggered by a timer.Is there any memory problem here? Are the unused instances correctly deleted by the garbage collector?
View 2 Replies
May 4, 2011
This blog (and others) state that you should set object references to null inside your dispose() methods when cleaning up objects. However, Actionscript 3 (with Flash Player 9) uses mark and sweep to clear out circular references for you. So I am wondering: is there really any reason to null out your object references?
View 2 Replies
Jul 3, 2010
My AS3 application basically does the following (pseudo code from main application class) 3 or 4 times by adding custom objects to stage:
_movieClipClassVariable = new MyCustomSpriteSubclass();
_movieClipClassVariable.addEventListener(MyEvents.READY, function(event:Event):void {
_hideLoading();
mcHolder.addChild(_movieClipClassVariable);});
_movieClipClassVariable.addEventListener(MouseEvent.CLICK, myClickHandler);
private function coverClickHandler(event:Event):void {
}
What is the right way to allow Garbage Collector to recycle _movieClipClassVariable after it is not necessary? Assign null to it? Remove all listeners? Use weak reference for listeners?
View 2 Replies
Nov 7, 2011
I have a question regarding AS3 memory management. Supposing I created an instance variable for a Class, in this case or type Sound:
public class SoundStore extends Sprite{
var s:Sound;
Then within various class functions I referenced this variable multiple times, each time I wanted to load in a new sound:
s = new Sound();
Am I correct in thinking that each time I created a new Sound I would be overwriting the previous allocated memory?
View 1 Replies
Feb 15, 2011
There is a Flex app with 7 main views. And there is a memory issue when navigating between views.All these views were in a ViewStack, but due to some involving 3D objects I assumed it was too much to have it all in the display list. I'm now clearing all children from the stack and adding/removing them when needed. This gave a small performance increase, but still becomes unresponsive with use. The strange thing is, with this and the original method, the CPU climbs with use but eventually levels out somewhere. Now I'm creating new instances of each screen when they are navigated to and setting the previous variable to null. Now it looks like CPU is spiking when the view is created, but leveling out to something much much lower than it was. This felt like progress, but now the available memory keeps climbing where it wasn't before....
My understanding was calling remove child or remove all children would mark the object for deletion when the garbage collector next ran. I can't see any other references to the instance. My code is along the lines of [code]I have a function for each button to add a new instance like the above.The only thing I can see and feel silly asking but need confirmation, is each view extends a class called "Screen", this class contains a singleton reference to some core components.[code]Would this trick the garbage collector into thinking it was still needed? General advice on clearing Objects from the memory pool would awesome!!! I've never needed to analyze the Flash Player in such depth.I think it's an error with sound drivers, removing all sound and shes purring like a kitten. Works on my machine fine with windows XP, but not on the touch pad the application is crashing on with windows 7 (unsure of the drivers looking into them now) Now I'm thinking its not the drivers, tried 3 different versions, all with no improvement. I did discover the sound was fading in and out with the TweenLite lib. Doesn't look like there are any memory leaks in TweenLite as it works fine on other machines. Just the use of volumeEasingFunction seems to consume increasing amounts of CPU until it freaks out. It is crappy hardware running windows 7, which doesn't help.
View 1 Replies
Jul 31, 2011
I'm learning to use Object-pooling. I'm trying to see how to get objects from the start of the pool and shift all the objects at position i to i-1. I've had a look at Adobe's help file on the subject [URL] but there I'm confused.
[Code]...
View 2 Replies
Jan 25, 2011
When is it a good idea to use an object pool in Flash? For example, is it a good/bad idea with bitmaps, MovieClips (with timeline animations inside of them), video, fonts?
View 1 Replies
Dec 28, 2011
I'm having trouble setting up my object pool. I created a "BallPoll" custom class to handle the pooling logic. I first call fillPool() to add 20 Ball objects into my array. Then in my document class when I want to create a Ball, I check the pool array. It isn't working and I'm not sure why.
[Code]...
View 1 Replies
Nov 22, 2010
Can anyone show an example of the object pool design pattern, as written with Actionscript 3.0?
View 1 Replies
Oct 6, 2010
You can hook into the creation of Flex 4 item renderers easily enough (through itemRenderer, or itemRendererFunction) allowing you to pull renderers from a custom object pool, but how would you put those renderers back into the pool?
I understand that layout virtualization does a form of object pooling, but I'd like a way to hook in to that. For example, when an itemRendererFunction has been assigned to a data group with a virtualized layout, item renderer construction is indeed deferred, but the instances are not re-used - I'd like to be able to intervene there, if possible.
But even in the case of normal virtualized renderers (where the instances are re-cycled) it would still be useful to be able to manage the pool manually. Pools could be shared between data groups, for example, to reduce the initial buffer required to populate each group.
Is there any way to know when Flex discards an item renderer instance? I have a sinking feeling that there is just no reliable way to tell - even though perhaps there should be.
View 2 Replies
Jul 4, 2011
my understanding is that primitive types (uint, string, Number, etc.) of a class do not need to be set to null for garbage collection.
for example, i am not required to write this dispose() method in the following class:
package
{
//Imports
import flash.display.Shape;
[Code]....
if this is true, which i believe it is, what is the difference between objects of primitive types and objects of non primitive types concerning memory allocation?
View 2 Replies
Jun 6, 2010
Does flash supply 'invisible' containers, to make object management a little easier ? eg. add some objects to the container, then add the container to the stage, then later on remove the container (i.e removing also the objects) ?
View 2 Replies
Jan 28, 2010
I've been procedural programming with AS2 for a few years. just recently jumped into AS3 a couple of weeks ago and working on a current project and trying to write a class that:
1) loads and collects data from an XML file
2) creates text-based buttons using the XML data
3) loads page sections once these buttons are clicked
i have all those down so far.
i am using TweenMax for tweening. there are two for loops that create the text buttons because they are separated with a header. if there is an easier way to do this, please let me know. the section class is a library movieclip and populated with data from the XML file. it is loaded to what i think is the parent clip of the buttom. so, each instance should look like[code]...
View 1 Replies
Jul 20, 2011
I am creating an object pool to cache some recyclable objects in memory at the outset of my application in order to avoid (as much as possible) the performance issues caused by GC running; if possible I'd like to minimize the memory my object pool reserves, so I'm attempting to pool generic forms of the objects (with no methods) and then casting the generic variants to more specific and complex object types which extend the generic form when I actually want them on the stage.
The trouble is that to do this requires the generic variant class to import/extend MovieClip (because the more complicated objects are themselves MovieClips and make use of DisplayObject methods)-- does simply importing and/or extending a class add to the memory an object takes up when instantiated even if it never uses methods from the inherited class? It makes sense that it would, and some light profiling seems to suggest that it does, but I'm not 100% certain. About how large should an 'empty' MovieClip instance be in bytes?
View 1 Replies
Dec 24, 2011
I've been reading a lot about the benefits of Object Pooling. Found some "tutorials" online, all above my skill level. Can anyone please show me an extremely simple example of an Object Pool. What my game does is creates Ball objects when the user holds down the mouse, stops when user lifts up mouse. I need to store these Ball objects in an array(or Vector), and hit test them with other objects, removing them from the stage when the hit another object. I'd like to create a pool of say 20 of so, created once, and recycle them.
[Code]...
View 1 Replies
Oct 11, 2009
what I have is:
- listener added with weak refference, therefore it shouldn't keep the GC away
- object set to null
- trace of the object m shows null
- debugger shows the value of m as null
But the "frame" trace still keeps on appearing, so where exactly is that object and how to check for it, how to delete it and kill it. I know that listeners keep objects in the memory, but then how to find them, and at the end of the day also used weakReference=true while assigning it, so that should take care of it. What exactly is going on here?
View 2 Replies
Dec 18, 2008
When debugging, I see an objects memory reference next to its value. Is it possible to get that as a string or assign a variable based off memory location?
var myInt:int = 5; debugger shows(@afff222)
var copy:int = memor(@afff222);
View 2 Replies
Aug 5, 2011
I have this line
Code:
this.parent.removeChild(this);
So basicaly the object is removing it self from the parent object,but I still think that it exisits in memory and doing its backend job.How can I remove it completely from memory?
View 8 Replies
Jun 9, 2010
I am getting problem of memory of having repeating object. Below is my code.
import flash.system.System;
var counter:Number=0;
var systemMemory:TextField=new TextField();
systemMemory.x=200;
stage.addEventListener(Event.ENTER_FRAME,showNext);
function showNext(event:Event){
[Code] .....
Above code does repeat textField Object continuously. Now I want to destroy previous created textField Object. So that my memory will not be hang. I got some where in the blog that with System.gc() could clear garbage collection. But currently I am not working with system.gc any more I want to clear previous object in programatically way. Is there any way that I could destroy previous created object?
View 2 Replies
Jan 15, 2010
There are a number of posts on here about merging XML with Java, but I can't seem to find any reference to Actionscript for the same task. I have a group of XML files that I need to load. I want them to sort into one XML Object in memory. For example, let's say these were my XML files:
[Code]...
View 1 Replies
Mar 26, 2004
Is it possible to delete a LoadVars object from memory, as well as its contents? Say I load 20k of data into a LoadVars, and I delete the LoadVars Object, does it stop loading variables into memory, and does it delete the memory that it importing?
View 1 Replies