Skip to main content
Participant
August 18, 2009
Question

Memory limitations in the flash player

  • August 18, 2009
  • 1 reply
  • 11469 views

I've been running into some memory limitations in a flex application that I'm working on.  As a test I wrote the code below to try and determine what the true memory limitations of a flex application running in the flash player are.  What I've found is the following.  On both the windows and linux machines there is a total of 4G of space available and in none of these cases was the OS near hitting the physical memory limit.

Max memory usage on various configurations:

flash player 10 on windows = ~650M

flash player 9 on windows = ~800M

flash player 10 on linux = unlimited (I was able to get up to 2.5G without any problems)

Has anyone else run into these limitations?  Can anyone comment on possible work arounds to these limitations or provide any insight on why the flash player would have an artificial memory limit below what the OS can provide?

In the following application each button click takes up about 100M making it fairly easy to see at what point the flash player is crapping out.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
     xmlns:mx="http://www.adobe.com/2006/mxml"
      minHeight="600" minWidth="800">

     <mx:Script>
         <![CDATA[
                 import mx.formatters.NumberFormatter;
       
                 var outer:Array = new Array(1000);
                 var outerCnt:int = 0;
                 private const MBYTE : int = 1024 * 1024;
             private function onButtonClick():void {
                 var inner:Array = new Array(5000000);
                 var formatter:NumberFormatter = new NumberFormatter();
                 formatter.useThousandsSeparator = true;
                 var cnt:int = 0;
                 for(var i:int=0;i<50000000;i++) {
                     inner[cnt++] = "testsstringtestsstringtestsstringtestsstringtestsstringtestsstringtestsstringtestsstringtestsstringtestsstring";
                       
                 }
               
                 outer[outerCnt++] = inner;
               
                 text.text = formatter.format(flash.system.System.totalMemory/MBYTE);
             }
          

         ]]>
     </mx:Script>
     <mx:Button id="btnConfirmSubmit" click="onButtonClick()" label="click me"/>
     <mx:Text id="text"/>

</mx:Application>

    This topic has been closed for replies.

    1 reply

    Adobe Employee
    August 18, 2009

    What error did you get at the limit? System.totalMemory is not the same as total process memory. See my blog for details?

    Alex Harui

    Flex SDK Developer

    Adobe Systems Inc.

    Blog: http://blogs.adobe.com/aharui

    Participant
    August 19, 2009

    In some cases I get the stack trace below and in other cases the application just crashes with no flex stack trace at all.  Was there something specifically related on your blog that I should take a look at?  Thanks.

    Error: Error #1000: The system is out of memory.

             at global$init()
             at flash.display::MovieClip/nextFrame()
             at mx.managers::SystemManager/deferredNextFrame()
             at mx.managers::SystemManager/preloader_initProgressHandler()
             at flash.events::EventDispatcher/dispatchEventFunction()
             at flash.events::EventDispatcher/dispatchEvent()
             at mx.preloaders:: reloader/timerHandler()
             at flash.utils::Timer/_timerDispatch()
             at flash.utils::Timer/tick()

    Adobe Employee
    August 19, 2009

    There's a post on how to use the profiler that explains the difference between System.totalMemory and process memory. There may also be a limit on how much memory plug-ins can use, but I'd say that if you've used up 500MB, that's quite a bit and some sort of memory management strategy is in order. Otherwise, if the customer is using your app along with Excel and some other biggies, there'll be lots of thrashing.

    Alex Harui

    Flex SDK Developer

    Adobe Systems Inc.

    Blog: http://blogs.adobe.com/aharui