Image Memory Leaks in AIR app

We are implementing an AIR application that loads thumbnails
from the hard drive and uploads them to a remote server.
When bringing in large images, for example, when importing
five 2MB files into Image objects:
Flex reports that it is using 55MB
Windows reports using 220 Meg (viewing memory usage of
adl.exe in task manager)
After deletion of these image objects, the memory stays
allocated!! It is released when the application is closed.
Two issues I see:
1. Huge memory usage for image objects (I understand that JPG
files are exploded into BMPs). It limits our ability to load 10's
or 100's of images.
2. Bad Memory leak
OTHER THINGS WE TRIED:
1. Displaying images as inline html IMG tags.. Same memory
usage!
2. Taking a snapshot of the image and displaying that.
Problem, used way to much CPU
I hope these issues will be fixed before release time or we
are hosed.
PLATFORM: Windows XP Professional, service pack 2

Hi
Have you tried the FB3 profiler to investigate why memory is
not getting deallocated?
You can use the loitering objects panel to track the back
references for the objects in memory. If you find that image object
is not being referenced by anything else. Can you file a bug at
http://bugs.adobe.com/flex
with a small test case.
Also as you know that jpg will be translated into bitmap. The
amount of memory required will be determined by the pixels in the
image. Each pixel will be 4K
Thanks,
Gaurav Jain
Flex SDK Team

Similar Messages

  • Fixing Memory Leaks in AIR App?

    Hi Friends,
    I'm been facing this memory leaks issue in our app and this has taken enough of our time and resources and we are not being able to find a solution for it.
    I have identified the problem in the module where we primarily need memory related fixes which is - We are setting Repeater's recycleChildren() property to true/false based upon certain conditions which we cant change. Now when this property is set to false Repeater is supposed to be removing its last created objects from memory and creating fresh ones. In our case repeater is unable to delete those. When I managed to get their instances (using createdChildren()) and freed them in code I called System.gc() for releasing the memory back to OS. Now what is happening is that this approach works fine when I run the app from code but when I create its installer (from Installsheild) and formally out in on machines it does not work. I came to know the reason from following blogs:
    http://jvalentino.blogspot.com/2009/05/flex-memory-issue-3-garbage-collection.html
    http://gskinner.com/blog/archives/2006/06/as3_resource_ma.html
    http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/System.htm l#gc()
    http://stackoverflow.com/questions/192373/force-garbage-collection-in-as3
    http://gskinner.com/blog/archives/2006/08/as3_resource_ma_2.html
    Guys, can anyone of you suggest what should I do here? This has become a delivery bottleneck and we need to give a fix where the memroy is released periodically and efficiently so that the end user's system does not hang.
    Please help.
    Shubhra

    Are you sure it doesn't ? Maybe flash does release memory but the OS leaves it assigned as described in the below comment from http://www.mikechambers.com/blog/2008/08/06/what-are-your-biggest-issues-with-adobe-air/co mment-page-3/#comment-26330
    "I just finished doing more experiments, I looks like the AIR app  does free the memory, but the OS leaves it assignned to the app process,  until other apps requiere that memory. So, looks like it is a natural  behaviour and the memory leak is not as terrible as I thougth."

  • Memory Leak in Preview.app when switching Display Profiles

    I found a weird memory leak in Max OS X Preview.app, which manifests itself when Display profiles (color calbration) is change. I wonder if anyone else can reproduce my experience.
    1. Open up "System Preferences" -> "Displays", switch to the "Color" tab. You'll need at least 2 available profiles in the list. (If you only have 1, you can create another using "Calibrate..." button to launch Display Calibration Assistant.
    2. Open an image file in Preview.app.  The larger, the better. Zoom in full size to maximize the effect of the bug. I repro'ed easily with this image: http://www.donporter.net/NewSchool/Color/Examples/Printer%20Test%20file.jpg
    3. Open up "Activity Monitor.app", and click on Preview to highlight it, so you can watch its memory usage.
    4. Switch back to "Diplays" Preference Pane. Using the arrow keys, toggle up and down between two different Display profiles.
    4a. At the same time, watch Preview's "Real Mem" in Activity Monitor, as well as the total "Active" memory.
    5. Each time you switch profiles,  Preview consumes more Active/Real memory, about 25MB per switch in my case. This continues until all physical memory is consumed, and then (I presume) starts swapping virtual memory to disk.
    6. Bring Preview to  foreground, and all the profile-induced memory usage is freed.
    Weird, wild stuff.

    Could it be possible that this is just the OS holding the memory for the app until another process requires it?  Do you find that the memory increase eventually causes the app to become unstable? 
    It might be best to open a new bug report on this over at bugbase.adobe.com.  When adding the bug, please include any source code, project or installer that will help us reproduce the issue internally.  If you'd like to keep your code private, feel free to email it directly to [email protected]  Once entered, please post back with the URL so that others effected can add their comments and votes.
    Thanks,
    Chris

  • Can I locate "memory leaks" to keep apps from crashing?

    Hello clever people,
    Since the iPhone 4s is still on the market, I assume that my 2 year old 4s should be able to work fine. However, I am constantly plagued by apps crashing and, most frustratingly, apps often fail to remain running in the background, even with one or no other apps running.
    I had a similar issue with my iPad2, just before it ran out of applecare, and the chap had me run through with sending anaylitcs to him, and his conclusion was that a few apps were causing 'memory leaks' - had me reset the iPad and reinstall everything. So I also did this on the iPhone, which did help, but it has not solved the issue. I have also removed most apps from the device, in a bid to locate the offending app.
    Searching on Google for "memory leak" only brings up info for developers, and nothing for someone who is actually using their phone and having issues. My usual scenario is going for a bike ride and running Strava, which then cuts out when I stop to take a picture - with no other apps running.
    Does anyone know how to solve the issue - return the phone to its 'as new' state, or locate the problem and remove it?
    Cheers,
    Tobias

    There are differenty types of, "resets" ..
    Have you tried the folloiwng ??
    Reset the device:
    Press and hold the Sleep/Wake button and the Home button together for at least ten seconds, until the Apple logo appears.
    If that doesn't help, tap Settings > General > Reset > Reset All Settings
    No data is lost due to a reset.
    Use iTunes to restore your iOS device to factory settings

  • Scale Image Memory Leak

    There seems to be a memory leak in the Image.getScaledInstance(...) method when used in the following code:
    if(scanImage.getWidth(this) > scanImage.getHeight(this))
        scanImage =  scanImage.getScaledInstance(300, -1, Image.SCALE_DEFAULT);
    else
        scanImage =  scanImage.getScaledInstance(-1, 300, Image.SCALE_DEFAULT);
    }Any ideas why its leaking, or another way of doing scaling?

    hi
    memory problems with this method seem to be common. here is another way of scaling images:
    Iterator readers = ImageIO.getImageReadersByFormatName("gif");
    ImageReader reader = (ImageReader)readers.next();
    ImageInputStream iis = ImageIO.createImageInputStream(new File(path));               
    reader.setInput(iis, true);
    ImageReadParam param = reader.getDefaultReadParam();
    param.setSourceRenderSize(new Dimension(width, height));
    BufferedImage thumbnail = reader.read(0, param);
    this does not work for jpeg images and you need the sdk 1.4.2 in order to use ImageIO. previous versions do not have this framework.

  • Memory leaks in the app

    While doing memory leak profiling in an application, I came across leaks due to certain custom methods like readHeaderBytes or httpProtocolStart from CFNetwork, GSEventRunModal from GraphicsServices etc. What should I do to correct these memory leaks???

    Find the objects that you are allocating that aren't being freed and call release on them. Check out this link:
    http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt. html

  • Memory leak running 32bit app in Windows 7 64bit

    I have an app that does not show signs of memory leakage (I'm queuing up 10mb arrays, and dequeuing them to file) under a standard 32bit operating system.  I've since tried running it in Windows 7 64 bit (as a 32 bit process using Labview 32-bit runtime engine) and noticed memory is incrementing.  
    Program takes 300Mb of memory.  If I save 100Mb of data to a file, will windows 7 64bit show this as 400Mb of memory (under windows on windows 32 bit)?  I don't think it would, but you never know...
    Are there any bugs in Labview 2010 with regards to queuing and windows 64 bit?  I'm tracking my Queue usage and it isn't increasing, thus no real reason for it to increase in memory allocation.
    Solved!
    Go to Solution.

    So this is something you observed.....by chance?
    Why is the memory "growth" a concern for you?
    As 32bit can allocate up to 2(3) GB of RAM per application process, memory is very limited, hence any application has to work very restrictive with memory.
    64-bit can allocate several TB of RAM (possibly reduced limited provided by the OS, but still more likely in the TB range rather than GB), an application doesn't need to be conservative.
    So it is possible that the OS Task Manager shows increased memory consuption, but as long as performance is not affected, it doesn't hurt anyone.
    Norbert
    EDIT: This might be also be induced by the funcions you are using to handle the data, in your case the file IO functions. Which functions are you using?
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.

  • Memory leak when pushView an popView

    Hello to community!
    I am having problems of memory leaks with an app I had build. After using it for 30-40 min it begin to go slow and slow.
    The app show images as a catalog, but when I push and pop the views my memory rise a lot.
    I think I am deleting all my oibjects setting them to to null and disposing all de bitmapdata that I use so I think that the problem should not be there.
    I have 3 views in my app menuView.mxml,categoriesView.mxml and productsView.mxml.
    My App begin in my pc (not in tablet) with TotalMemory: 47Mb and Private Memory : 88 MB
    After pushing and poping the views for 5 times I get TotalMemory: 61Mb and Private Memory : 101 MB
    Imagine if I do this for 20 times, all the app begin to go very slow in my Ipad or my Samsung Galaxy Tab.
    Why is this happening? I have no idea how to solve this.
    Thanks a lot!!
    I put some code below.
    Whe I am in menuView i use the following code to push the view from menuView to categoriesView
    protected function button3_clickHandler(event:MouseEvent):void
                    if((FlexGlobals.topLevelApplication.getIdClienteServidorCompraActual()!=null)&&(FlexGloba ls.topLevelApplication.getIdClienteServidorCompraActual()>0))
                        navigator.pushView(categoriesView);
    Whe I am in categoriesView i use the following code to push the view from categoriesView to productsView. In this view i have 3 button for each category.
    protected function buttonC1_clickHandler(event:MouseEvent):void
                    //Categoria general con todos
                    var ab:ArrayCollection =  getIdAmbienteServidor();
                    cleanMemory();
                    navigator.pushView(productsView, null);
    private function cleanMemory():void
                    result.splice(0);
                    result = null;
                    System.gc();
    Whe I am in productsView I use the following code to pop(I USE PUSH INSTEAD OF POP DUE TO DIFFERENT OPTIONS I HAVE) the view from productsView to categoriesView .
    protected function button1_clickHandler(event:MouseEvent):void
                    cleanMemory();               
                    navigator.pushView(menuView);        
    private function cleanMemory():void
                    if(image1 != null)
                        image1.source = "";
                        if(image1.bitmapData != null)
                            image1.bitmapData.dispose();
                    if(image2 != null)
                        image2.source = "";
                        if(image2.bitmapData != null)
                            image2.bitmapData.dispose();
                    if(result != null)
                        result.splice(0);
                        result = null;
                    if(result1 != null)
                        result1.splice(0);
                        result1 = null;
                    if(result2 != null)
                        result2.splice(0);
                        result2 = null;
                    dbConnection = null;
                    object1 = null;
                    object2 = null;
                    dataToSave = null;
                    cGreyImageSmallAsset = null;
                    cRedImageSmallAsset.bitmapData.dispose();
                    cRedImageSmallAsset = null;
                    cOrangeImageAsset.bitmapData.dispose();
                    cOrangeImageAsset = null;
                    cGreenImageAsset.bitmapData.dispose();
                    cGreenImageAsset = null;
                    cPinkImageAsset.bitmapData.dispose();
                    cPinkImageAsset = null;
                    cBlueImageAsset.bitmapData.dispose();
                    cBlueImageAsset = null;
                    cGreyImageAsset.bitmapData.dispose();
                    cGreyImageAsset = null;
                    cRedImageAsset.bitmapData.dispose();
                    cRedImageAsset = null;
                    cGreenImageSmall = null;
                    cOrangeImageSmall = null;
                    cPinkImageSmall = null;
                    cBlueImageSmall = null;
                    cGreyImageSmall = null;
                    cRedImageSmall= null;
                    cGreenImage = null;
                    cPinkImage = null;
                    cBlueImage= null;
                    cGreyImage = null;
                    cRedImage= null;
                    cOrangeImage= null;
                    System.gc();
    I load the images with.
    private function setImages():void
                    //var width:Number = FlexGlobals.topLevelApplication.width;
                    if(object1!=null)
                        //var widthImage1:Number = (width/2)-80;
                        //image1.width = widthImage1;
                        panelLeft.visible = true;
                        buttonLeftMore.visible = true;
                        image1.source = "file://" + File.applicationStorageDirectory.nativePath + "/b"+object1.idArchivo+"_500.jpg";
                        setObject1MainTexts();
                    else
                        image1.source = "";
                        panelLeft.visible = false;
                        buttonLeftMore.visible = false;
                    if(object2!=null)
                        //var widthImage2:Number = (width/2)-80;
                        //image2.width = widthImage2;
                        panelRight.visible = true;
                        buttonRightMore.visible = true;
                        image2.source = "file://" + File.applicationStorageDirectory.nativePath + "/b"+object2.idArchivo+"_500.jpg";
                        setObject2MainTexts();
                    else
                        image2.source = "";
                        panelRight.visible = false;
                        buttonRightMore.visible = false;
    Whe I am in categoriesView i use the following code to pop(I USE PUSH INSTEAD OF POP DUE TO DIFFERENT OPTIONS I HAVE) the view from categoriesView to menuView.
    protected function button1_clickHandler(event:MouseEvent):void
                    cleanMemory();
                    navigator.pushView(menuView);
    private function cleanMemory():void
                    result.splice(0);
                    result = null;
                    System.gc();

    Hello,
    I've the similar problem. I try to clean all objects, listeners and images. But i still have a memory leak.
    Do you found a solution, Richard ?
    Regards.

  • Memory Leak in WindowsTreeUI?

    I'm hunting memory leaks in my app (of which there are alarmingly many), and have just stumbled across one which appears to be a bug in the class com.sun.java.swing.plaf.windows.WindowsTreeUI
    When the tree is populated, each treenode contains a reference to a node in our own rather large data structure.
    When we close the application-level model, we also call tree.setModel(null) and expect the tree to lose all its references. From a memory management point of view, it is important that the entire old model goes out of scope before we start loading a new one.
    If the tree is visible, everything works as expected.
    But if the tree is not visible (but still in scope) e.g. because we overlay a component in a JLayeredPanel, we get some dangling references in the (private) drawingCache member of the WindowsTreeUI class. And a single dangling reference keeps the whole caboodle in scope until something else comes along.
    I have a bad feeling I'm going to have code around painfully by substitiuting in some lite dummy model and then modifying all the event handlers that get confused as a result.
    Or does anyone have a bright idea how I can persuade the drawingCache to flush itself (presumably this only happens on windows)?
    Ian

    I also had a similar problem. My app has a number of large jtrees (200-300 nodes) with other data objects attached. I was doing a simple null of the JTree thinking that it would be GC'd. Using the NetBeans profiler I could see that it never went away. I found one location where I was temporarily hang on to node references within Swing controls. I've eliminated those. I then released the listeners I specifically assigned. There seems to be other listeners hanging on to node references. I have found little in the way of documentation or advice on how to clean these up. As a work around, when I'm done with a JTree, I traverse the nodes bottom up and remove each node from its parent (DefaultMutableTreeNode - removeNodeFromParent() ). This seems to work. The NetBeans profiler shows the vast majority of the JTree objects as GC'd. I'm sure this is not a perfect solution but it seems to be serviceable.
    I would appreciate hearing about any experiences in getting JTrees to GC.

  • Is there any memory leaks in the version 4.6.21?

    Hi All:
    My en so weak ,so I try my best to let you understand my mean...
    I add replication to my app rencently.
    It's seem any memory leaks in the version 4.6.21.
    Threr is an env in my app's database. and there are 2000 dbs in the env. The 2000 dbs distributing In 200 directory . And the 200 directory is the subdirectory under the DATADIR.
    In the app, client and master create all subdirectory befoer the env been opened . And In my test ,if the master app use relative path to create Db and r/w data, the data will be correct send to client, The data in the master and client will keep identical.
    But, There is many memory leaks in the app.In my test ,the app will use up all memory that lead malloc failed and crash.
    the app use DB_LOG_AUTOREMOVE,DB_LOG_INMEMORY,DB_REPMGR_ACKS_NONE.
    cache_size = 500M.
    void event_callback(DbEnv* dbenv, u_int32_t which, void *info)
         bool * isMaster = (bool *)dbenv->get_app_private();
         info = NULL;                    /* Currently unused. */
         switch (which) {
         case DB_EVENT_REP_MASTER:
              *isMaster = 1;
              dbenv->errx("switch to master mode");
              break;
         case DB_EVENT_REP_CLIENT:
              *isMaster = 0;
              dbenv->errx("switch to slaver mode");
              break;
         case DB_EVENT_REP_STARTUPDONE: /* FALLTHROUGH */
         case DB_EVENT_REP_NEWMASTER:
         case DB_EVENT_REP_PERM_FAILED:
              // I don't care about this one, for now.
              break;
         default:
              dbenv->errx("ignoring event %d", which);
    Thanks
    d.j
    Message was edited by:
    user623248

    I setup logdir,datadir and envdir into different directories with
    the functions set_data_dir and set_log_dir.I created two directories
    under the datadir and created more than 100 sub-directories
    respectively for the two dir, where the 2000 databases located.By the way, even though it doesn't seem likely to be the cause of the
    memory leak, you should still fix this illegal usage of subdirectories
    before we get much further investigating. We might as well eliminate
    any possible source of problem, no matter how unlikely it seems.
    Also, just as an experiment, I would be very tempted to try running
    again without using any separate directories. In other words, don't
    call set_data_dir or set_log_dir at all, and just let everything be
    put into the one single directory. If that changes the results, that
    will be a big clue to help us know where to look for the problem.
    I'am writting a demo , but it take time.
    i will reply later .Thank you. Take your time -- we'll be here.
    Alan Bram
    Oracle

  • Sending data between 2 AIR apps on seperate machines

    Hi.
    I am wondering if it is possible to somehow send data, i.e
    input text or image data between an AIR app installed on 2 seperate
    machines? I dont want to have to send the data from the first
    machine to an online server and have the second machine have to
    check the server for updates. If possible i would like to link the
    two apps directly? is this possible?
    Barry

    This isn't possible right now. Flash 10 has a new feature
    that allows a connection between two machines after going through a
    "matchmaking" server. This will become available to AIR
    applications in the next release.

  • Getting rid of  JFrame (big memory leak)

    Hi,
    I have an app that has a main frame with a button. When you press the button another JFrame is created. When you close this JFrame it is not garbage collected becauses references to it are held by some swing internals and also, it appears, by all listeners that have been registered. Is there any way of getting rid of these references so I can recover the memory? This is causing a huge memory leak and the app eventually dies......
    Thanks
    Simon

    Don't know if you are using kunststoff laf and a 1.4 jvm, but kunststoff has a mem leak when using toolbars.
    I sent a mail in August 2002 to them, but it seems no bugfix release is coming out.
    Copy of the relevant part of the mail:
    While looking for a memory leak (JFrames not being garbage collected), I noticed a bug in the kunststoff 2.0.1 laf:
    The KunststoffToolBarUI class is a singleton, but the base MetalToolBarUI class is not (at least in jdk 1.4, I haven't looked at earlier versions).
    The MetalToolBarUI has several hashtables containing ui components, and the static reference in KunststoffToolBarUI is preventing the components in this hashtables from being garbage collected.
    After changing KunststoffToolBarUI.createUi to always return a new instance of KunststoffToolBarUI the memory leak disappears and the JFrame's are garbage collected.

  • AIR runtime Memory Leak?

    Hi,
    I have an app developed with AIR 3.7 for iOS (iPad)
    The app gets very sluggish after a while, eventually crashes.
    I've been -very- careful to pool objects where possible and cleanup / nullify all objects once they're not needed any more.
    Profiling the app in Scout returns a pretty stable memory profile (the peaks and the lows translate very well to what's happening on screen)
    Simultenously profiling the app using XCode's Instruments, shows me that the memory consumption off the app constantly rises up to the point the systems spends more time throwing memory warning than anything else.
    Here are screenshots of both profilers: they show as3 memory usage being pretty stable, on the app level, memory keeps rising...
    https://dl.dropboxusercontent.com/u/608333/AIR_memory_leak.zip
    If AS3 is not leaking any memory (according to scout), but the app is (according to Instruments), would I be right assuming there's a memory leak in the AIR-runtime itself?
    thanks for your feedback!
    bart.

    ok, lots of trial and error has showed me the following:
    There are two issues when loading assets using the Loader Class with its LoaderContext set to ImageDecodingPolicy.ON_LOAD.
    These issues typically arise in a magazine-like app, where many images are loaded and unloaded continously.
    Issue 1:
    When initializing a load() on a Loader class with LoaderContext to ImageDecodingPolicy.ON_LOAD, all image decoding seems to be queued in a seperate thread. With several large images, especially on mobile devices, the time to crunch through a queue like this can easily go into dozens of seconds. During that time, some of the loaders can be unloaded, cleared, nulled and deleted. Yet, the loader isn't removed from the decoding queue.
    In other words: once you fire the 'load' method on a Loader instance, you're not able to cancel the decompression process, even though the decompression might not even have started yet, as queued by other decompressions.
    Issue 2:
    When a Loader instance is unloaded, cleared, nulled and deleted while its decompression is still queued and not yet fully decompressed, there seems to be a memory leak. With several dozens of images loading and interupting the loading, you'll notice a difference in memory consumtion when comparing memory output in Scout and in Instruments. Both memory graphs build up very similar yet after the runtime's garbarge collection kicks in, the memory graph in Instruments seems to not release memory fully. Consumption gradually rises until the app eventually crashes.
    https://dl.dropboxusercontent.com/u/608333/AIRMemoryLeakExample.zip
    This example app allows you to create loaders in bursts by touching the screen.
    You'll instantly see the massive waiting times for decompression, despite the fact there's only a few Loader instances in memory at the same time. After several short bursts and wait-a-bit-for-decompression-to-catch-up, you should also notice the difference in memory profiling between Scout and Instruments.
    I managed to work around both issues by making a LoaderQueueManager class.
    This class instantiates and returns a Loader instance, queues these instances and tracks its onComplete handler. Only when one loader is finished loading, the next loader starts loading. This way, you never have different instances trying to simulataneously decompress their content. As such decompressions are never interrupted and loaders can also be de-queued. This practically speeds up decompression dramatically, since images that are removed won't get decompressed in vain. Memory Leaks also don't occur, since not a single decompression is ever interupted.
    This solution only works with content loaded locally.
    Hope you can get somewhere with this,
    and hopefully, you find a fix in one of the next AIR releases.
    best,
    bart.

  • Some of Photo (JPEG)-compressed images by Flash Pro are not shown in AIR app (3.7/3.8)

    Does anyone see this issue happening? In Flash Pro it's OK, but in AIR, it's broken.
    https://bugbase.adobe.com/index.cfm?event=bug&id=3558175
    Problem Description:
    Some JPEG-compressed images in swc produced by Flash Pro CS6 is not shown in AIR.
    Steps to Reproduce:
    1. Create a fla with Flash Pro CS6
    2. Put a png image in it and open the property of the image to make sure its compression option is Photo (JPEG)
    3. Produce an swc out of the fla
    4. Create an AIR app that shows the contents in the swc
    Actual Result:
    All images are shown
    Expected Result:
    Some of the images are not shown (nothing is shown where they are supposed to be)
    Any Workarounds:
    Use Lossless (PNG/GIF) for all images

    i was able to get it to work from a suggestion in another thread: if you write a JSFL that goes through all your bitmaps and makes sure they do not uset he default compression of the document, but instead use custom compression (it can match the default however). this worked for me

  • Memory Leak in edited images?

    I am using Captivate 4.0.1 Build 1658 (this means that the patch from May 2009 is applied) on Windows Vista.
    The following has happened to myself and at least 2 other developers.
    We edit a slide background image in Photoshop...when the  movie plays, a flash of the previously unedited background shows.  I have tried re-editing the background and it does not fix the problem. I have tried eliminating transistions and it does not fix the problem.  I have noticed that this happens when background images are edited in Photoshop as well as within Captivate when bitmaps are pasted onto a slide background and then merged into the background.
    I don't know if the correct term for this is a memory leak, but the closest mention of this problem I could find was here: http://blogs.adobe.com/captivate/2009/05/captvate_4_patch_update.html
    I appreciate any help resolving this.
    Thank you,
    Beth

    The Reset Firefox feature can fix many issues by restoring Firefox to its factory default state while saving your essential information.
    Note: ''This will cause you to lose any Extensions, Open websites, and some Preferences.''
    To Reset Firefox do the following:
    #Go to Firefox > Help > Troubleshooting Information.
    #Click the "Reset Firefox" button.
    #Firefox will close and reset. After Firefox is done, it will show a window with the information that is imported. Click Finish.
    #Firefox will open with all factory defaults applied.
    Further information can be found in the [[Reset Firefox – easily fix most problems]] article.
    Did this fix your problems? Please report back to us!

Maybe you are looking for