hie dharmendra,

this is was post regarding memory leakage answered by jitendra earlier.. i
think this may help you..

Well there may be some references still alive in the memory(Reachable
reference). When you add any addEventListener please remove this with
removeEventListener. This will make those references eligible for garbage
collection. And also try to make those objects as weak references. Read abt
weak references. It is not advisable . But upto some extent you can do this.


There is a blog by Alex Huari for memory management . Do some google.


On 6/27/09, Dharmendra Chouhan <[email protected]> wrote:
>
>
> Hi All,
>
>      I have  very basic application which uses  DataSerives over RTMP
> channel  to populate dataGrid , I have not used any  user defined
> component.
>
> This application has got LOAD data and Remove data  Button just to
> simulate the actual application
>
> What happens , when I click on LOAD data , It  loads the data from
> server(JBOSS) then I Remove all the data and force the GC to run
>
> If I continuously keep loading and removing the  data ,  memory goes
> up every time and after some times It reaches to threshold and
> finally crashes the Browser.
>
> In actual application as soon as user logs in a dedicated DS
> destination is created..
>
>    private function createDestination(destName:String):void{
>             var remoteService:RemoteObject = new RemoteObject
> ("DestinationManager");
>             remoteService.addEventListener(ResultEvent.RESULT,
> resultHandler,false,0,true);
>             var operation:AbstractOperation =
> remoteService.getOperation("createDestination");
>             operation.send(destName);
>             var cs:ChannelSet = new ChannelSet();
>             var rtmpChannel:RTMPChannel = ServerConfig.getChannel("my-
> rtmp") as  RTMPChannel;
>             cs.addChannel(rtmpChannel);
>             tradeService = new DataService() ;
>             tradeService.destination=destName;
>             tradeService.channelSet = cs;
>         }
>
>
> Now when user hits on Load data button to load the trade data ...
>
>   public function loadData():void
>         {
>         var remoteService:RemoteObject  = new RemoteObject
> ("filterRemoteVO");
>         var operation:AbstractOperation = remoteService.getOperation
> ("loadData");
>         tradeService.fill(tradeCollection);
>         operation.send(rowData.text ,GUIID);
>         tradeList.dataProvider = tradeCollection;
>
>         }
>
>
> Remove Data  hit I clean all the resource and released collection :-
>
>      public  function  removeAll():void{
>         if(tradeList.dataProvider){
>              tradeCollection.source = new Array();
>              tradeList.dataProvider.source = new Array();
>              tradeList.dataProvider = null;
>         }
>            tradeService.release();
>           tradeService.releaseCollection(tradeCollection);
>          tradeService.channelSet.disconnectAll();
>          tradeService.disconnect();
>           tradeService.logout();
>           System.gc();
>         }
>
> Except these 3 function I don't have any code which could cause memory
> leak.
>
> I m using
>
>    * LCDS 2.5
>    * Flex 3.0
>    * JBoss4.2
>
>
> Please see the mxml file below   , If  possible please have a look at
> it , I might  not be using dataSerice API correctly.
>
> I have been trying to solve this leak for last two week , I really
> need help from you guys.
> My client has already evaluating other contemporary technology because
> of this memory issue.
>
> I have also created scalled down war file which can be deployed on
> any  java application server.
>
> Any help will greatly be appreciated
>
> Regards,
>
> Dam
> ######################## MXML##########################
>
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> layout="absolute"
>      creationComplete="init();" height="100%" width="100%"
>     >
>     <mx:Script >
>     <![CDATA[
>         import mx.containers.GridRow;
>           import mx.utils.Base64Decoder;
>         import mx.utils.StringUtil;
>            import mx.events.CollectionEvent;
>         import mx.formatters.Formatter;
>         import mx.events.ResizeEvent;
>         import mx.controls.DataGrid;
>         import mx.effects.Fade;
>         import mx.events.DataGridEvent;
>         import mx.utils.ObjectUtil;
>         import mx.events.ScrollEvent;
>       import mx.formatters.DateFormatter;
>       import mx.events.ListEvent;
>       import mx.data.mxml.DataService;
>       import mx.messaging.config.ServerConfig;
>       import mx.messaging.channels.RTMPChannel;
>       import mx.messaging.ChannelSet;
>       import mx.rpc.AbstractOperation;
>       import mx.rpc.remoting.RemoteObject;
>       import mx.collections.ArrayCollection;
>       import mx.controls.Alert;
>       import mx.rpc.events.ResultEvent;
>       import mx.messaging.messages.*;
>       import mx.messaging.events.*;
>       import mx.controls.Alert;
>
>
>
>        private var GUIID:String;
>        private var lastRollOverIndex:Number;
>
>        public var tradeService:DataService=null;
>        public var tradeCollection:ArrayCollection = new
> ArrayCollection();
>
>       public var flag:Boolean = false;
>
>
>        private function init():void {
>           var guiId:String ="TEST";
>            createDestination(GUIID);
>
>       }
>
>        public function getData():void{
>
>             // memory.text =""+ ((System.totalMemory / 1024)/1024);
>
>        }
>        public function releaseDataServices():void {
>           //  tradeService.fill(null);
>                tradeService.release();
>               // tradeService.releaseCollection(tradeCollection);
>               tradeService.channelSet.disconnectAll();
>                tradeService.disconnect();
>                tradeService.logout();
>                //tradeService.dataStore = null;
>        }
>                /*Function for creating destination*/
>          private function createDestination(destName:String):void{
>             var remoteService:RemoteObject = new RemoteObject
> ("DestinationManager");
>             remoteService.addEventListener(ResultEvent.RESULT,
> resultHandler,false,0,true);
>             var operation:AbstractOperation =
> remoteService.getOperation("createDestination");
>             operation.send(destName);
>             var cs:ChannelSet = new ChannelSet();
>             var rtmpChannel:RTMPChannel = ServerConfig.getChannel("my-
> rtmp") as RTMPChannel;
>             cs.addChannel(rtmpChannel);
>             tradeService = new DataService() ;
>             tradeService.destination=destName;
>             tradeService.channelSet = cs;
>         }
>
>         //This function calls dataservice fill method depending on
> wheather destination is created or not
>        private function resultHandler(event:ResultEvent):void{
>           //call data service as destination is created successfully
>            var status:Boolean = event.result as Boolean
>           // Alert.show("status="+status);
>            if(status){
>
>             getData();
>           }
>           else{
>               //TODO report error to MATS app
>           }
>        }
>      public  function  removeAll():void{
>         if(tradeList.dataProvider){
>              tradeCollection.source = new Array();
>              tradeList.dataProvider.source = new Array();
>              tradeList.dataProvider = null;
>         }
>            tradeService.release();
>           // tradeService.releaseCollection(tradeCollection);
>          tradeService.channelSet.disconnectAll();
>          tradeService.disconnect();
>           tradeService.logout();
>           System.gc();
>         }
>
>
>       public function loadData():void
>         {
>         var remoteService:RemoteObject  = new RemoteObject
> ("filterRemoteVO");
>         var operation:AbstractOperation = remoteService.getOperation
> ("loadData");
>         tradeService.fill(tradeCollection);
>         operation.send(rowData.text ,GUIID);
>         tradeList.dataProvider = tradeCollection;
>
>         }
>
>   ]]>
> </mx:Script>
>
>
>      <mx:DataGrid   id="tradeList"
>             initialize="tradeList.dataProvider = tradeCollection"
> horizontalScrollPolicy="auto"
>               height="659" x="0" y="84">
>
>            <mx:columns>
>                 <mx:DataGridColumn  headerText="Security Description"
> dataField="securityDesc"
>                  />
>                 <mx:DataGridColumn  headerText="B/S"
> dataField="transactionType"
>                 />
>                 <mx:DataGridColumn  headerText="Amount"
> dataField="amount"
>                 />
>                 <mx:DataGridColumn  headerText="Price Text"
> dataField="priceText"
>                 />
>                 <mx:DataGridColumn  headerText="Counterparty"
> dataField="counterParty"
>                 />
>                 <mx:DataGridColumn  headerText="Trade Date"
> dataField="tradeDate"
>                 />
>                 <mx:DataGridColumn  headerText="Settle Date"
> dataField="settleDate"
>                 />
>                 <mx:DataGridColumn  headerText="Trade Status"
> dataField="tradeStatusId"
>                 />
>                 <mx:DataGridColumn  headerText="Trader"
> dataField="trader"
>                 />
>                 <mx:DataGridColumn  headerText="Salesperson"
> dataField="salesperson"
>                 />
>                 <mx:DataGridColumn  headerText="Ticket Number"
> dataField="tradeNumber"
>                 />
>                 <mx:DataGridColumn  headerText="Entry Date"
> dataField="tradeTime"
>                 />
>                 <mx:DataGridColumn  headerText="Cancel Date"
> dataField="cancelDate"
>                 />
>                 <mx:DataGridColumn  headerText="Cancel Time"
> dataField="cancelTime"
>                 />
>
>
>
>             </mx:columns>
>          </mx:DataGrid >
>         <mx:Grid x="149" y="23" width="995">
>                 <mx:GridRow width="100%" height="100%">
>                            <mx:GridItem width="100%" height="100%">
>                                 <mx:Label text="Enter No of
> obejcts"   width="111"/>
>                         </mx:GridItem>
>                         <mx:GridItem width="100%" height="100%">
>                                 <mx:TextInput name="row"
> id="rowData"   width="97"/>
>                         </mx:GridItem>
>                         <mx:GridItem width="100%" height="100%">
>                                 <mx:Button  label="Load Data"
> click='loadData()'/>
>                         </mx:GridItem>
>                         <mx:GridItem width="100%" height="100%">
>                                 <mx:Button  label="removeAll"
> click='removeAll()'/>
>                         </mx:GridItem>
>                         <mx:GridItem width="100%" height="100%">
>                                 <mx:Label text="Total Memory"/>
>                         </mx:GridItem>
>                         <mx:GridItem width="100%" height="100%">
>                                 <mx:TextInput text="Total Memory"
> id="memory"   width="97"/>
>                         </mx:GridItem>
>                         <mx:GridItem width="100%" height="100%">
>                                 <mx:Label text="Grid Row Count"/>
>                         </mx:GridItem>
>                         <mx:GridItem width="100%" height="100%">
>                                 <mx:TextInput name="GridRowCountN"
> id="GridRowCount"   width="97"/>
>                         </mx:GridItem>
>                 </mx:GridRow>
>
>
>
>         </mx:Grid>
>
>
> </mx:Application>
>
> >
>


-- 
Regards
Jagan Mady's

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Flex 
India Community" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/flex_india?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to