Hot Deploy Memory leak

It appears that when using the hot deploy functionality on Weblogic
6.2 to redeploy an EJB application .ear that all previously loaded
classes are untouched - creating a huge memory leak. The weblogic
generated stub classes are never touched, even though new copies are
loaded into memory. After numerous hot deploys, I eventually get an
out of memory error. Is there some way to force the unloading of
these classes? Is this fixed on WL 7 maybe ?

I will contact bea support as well, but any ideas if this fix is
resolved in base WL 7.0, or is there a SP for 7.0 that includes this
fix too?
Thanks,
Terry
==========
Rajesh Mirchandani <[email protected]> wrote in message news:<[email protected]>...
This is fixed over SP3 and is in SP4. Pls contact [email protected]
Jared Rodriguez wrote:
It appears that when using the hot deploy functionality on Weblogic
6.2 to redeploy an EJB application .ear that all previously loaded
classes are untouched - creating a huge memory leak. The weblogic
generated stub classes are never touched, even though new copies are
loaded into memory. After numerous hot deploys, I eventually get an
out of memory error. Is there some way to force the unloading of
these classes? Is this fixed on WL 7 maybe ?

Similar Messages

  • JSF (RI) app hot-deploy memory leak

    I have a standard JSF (RI) based web app that appears to be working just fine in terms of functionality. However, I believe that there is a memory leak associated with the sort of frequent hot-deploy cycles that are typical during a normal development cycle. I have been monitoring the app via the jvmstat 3.0 tools and have witnessed NO memory growth in the young or old generation areas - regardless of useage pattern. All of the growth seems to happen in the perm area of memory and be directly coincidental with the occurence of a deploy. Eventually, continued hot-deply cycles will result in an OutOfMemory error on the container - please note that continued and extensive use of the app WITHOUT the aforementioned hot-deploys does NOT result in the OutOfMemory error.
    From my research so far, I have discovered the following thread:
    http://forum.hibernate.org/viewtopic.php?t=935948&postdays=0&postorder=asc&start=75
    It refers to a similar problem with hiberate (which I am NOT using) as well as a commons-logging and several others. From the looks of it, I strongly suspect that there may be an issue with JSF when it's implementation is bundled inside the WEB-INF/lib dir - i.e. inside the specific web app's ClassLoader.
    Based on the above, I have implemented a SessionContextListener that invokes the org.apache.commons.logging.LogFactory.release() inside the contextDestroyed( ServletContextEvent e ) method. This does appear to free up some perm memory but there is still large growth that appears to be directly related to the FacesServlet initialization (navigation handlers, etc). I looked into calling the FacesContext.release() method which seems to have purpose similar to that of the LogFactory.release() method. However, at the time of the contextDestroyed() invocation, FacesContext.getCurrentInstance() always returns null, so I do not ever have an opportunity to invoke the release method that I am aware of. If my suspicions are correct, than I would likely be able to avoid this problem entirely by simply placing the JSF implementation jars in the conatiner's shared lib dir - instead of bundling it inside WEB-INF/lib. However, this is not an option for this container as multiple web apps (which require the flexibility to use differing JSF implementations and versions - i.e. RI vs MyFaces, etc) will run on this container.
    I don't believe it is at all related to the problem at hand, but my container is JBoss 4.0.2.
    Any and all assistance and suggestion will be greatly appreciated! Has anyone else seen this sort of behavior? Are there any work arounds or corrective actions?
    TIA

    Has anyone else run into this? I'd greatly appreciate any assistance as I cannot seem to resolve this hot-deploy related leak.

  • Memory leak in a client using EJBs deployed in a Bea Weblogic 10.0.0 cluste

    Hi all,
    We are having a memory leak in a client using stateless EJBs deployed in cluster. The client is a Tomcat 6.0.18 with java 6 but it is reproduced using Tomcat 5 with java 5. The client is calling a Weblogic Server 10.0 making
    calls to an EJB deployed in cluster that has two instances installed in two different machines.
    The client works fine if we shutdown one of the server instances and so when the client is using only one instance.
    Resuming the environment:
    Client Side:
    1 HP-Itanium machine with HP-UX.
    1 Tomcat 6 with java 6 (reproduced with java 5)
    Bea Weblogic client (wlclient.jar) for Weblogic 10.0.0
    Server Side:
    2 HP-Itanium machines with HP-UX
    Bea Weblogic Server 10.0.0 installed in both machines
    An unique domain
    Two Bea instances (one per machines) associated to a Bea Cluster
    EJBs deployed in both instances
    We have monitored the memory consumed in Tomcat and we have noticed that the VM memory PS OLD GEN grows up permanently when we make tests having the two server side Bea Instances up. We have extended
    the memory VM parameters in Tomcat client till 1G and it's only a way to delay the end: the free memory is empty, the GC is not able to free no more byte and the CPU is 100% consumed by the GC work. At the end Tomcat Client
    doesn't accept more http petitions and must be restarted.
    Besides, we have studied the VM memory in Tomcat using jmap and importing it using Eclipse Memory Analyzer. We have seen some strange memory blocks of several Mbytes that are always growing up and that are stored
    under data structures in the package com.sun.corba:
    com.sun.corba.se.impl.legacy.connection.SocketFactoryConnectionImpl (4.5Mb)
    |
    -> com.sun.corba.se.impl.transport.CorbaResponseWaitingRoomImpl
    |
    -> java.util.Hashtable
    |
    -> java.util.Hashtable$Entry
    |
    -> java.util.Hashtable$Entry
    -> java.util.Hashtable$Entry
    -> java.util.Hashtable$Entry
    Has anybody any idea about this problem?
    Thanks in advance.

    Hi all,
    We are having a memory leak in a client using stateless EJBs deployed in cluster. The client is a Tomcat 6.0.18 with java 6 but it is reproduced using Tomcat 5 with java 5. The client is calling a Weblogic Server 10.0 making
    calls to an EJB deployed in cluster that has two instances installed in two different machines.
    The client works fine if we shutdown one of the server instances and so when the client is using only one instance.
    Resuming the environment:
    Client Side:
    1 HP-Itanium machine with HP-UX.
    1 Tomcat 6 with java 6 (reproduced with java 5)
    Bea Weblogic client (wlclient.jar) for Weblogic 10.0.0
    Server Side:
    2 HP-Itanium machines with HP-UX
    Bea Weblogic Server 10.0.0 installed in both machines
    An unique domain
    Two Bea instances (one per machines) associated to a Bea Cluster
    EJBs deployed in both instances
    We have monitored the memory consumed in Tomcat and we have noticed that the VM memory PS OLD GEN grows up permanently when we make tests having the two server side Bea Instances up. We have extended
    the memory VM parameters in Tomcat client till 1G and it's only a way to delay the end: the free memory is empty, the GC is not able to free no more byte and the CPU is 100% consumed by the GC work. At the end Tomcat Client
    doesn't accept more http petitions and must be restarted.
    Besides, we have studied the VM memory in Tomcat using jmap and importing it using Eclipse Memory Analyzer. We have seen some strange memory blocks of several Mbytes that are always growing up and that are stored
    under data structures in the package com.sun.corba:
    com.sun.corba.se.impl.legacy.connection.SocketFactoryConnectionImpl (4.5Mb)
    |
    -> com.sun.corba.se.impl.transport.CorbaResponseWaitingRoomImpl
    |
    -> java.util.Hashtable
    |
    -> java.util.Hashtable$Entry
    |
    -> java.util.Hashtable$Entry
    -> java.util.Hashtable$Entry
    -> java.util.Hashtable$Entry
    Has anybody any idea about this problem?
    Thanks in advance.

  • Memory Leak In DataService

    Hi All,
          I had posted this query to couple of other groups ..I am still struglling with this issue..Hope someone  will  help me out here
          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>

    Hi Natasha,
    Sorry for late reply.
          I tried your suggestion but It did not help to release memory. Actully,this app contains only one event handler which is for remote method call , I dont think this could cause any memory leak.
    Profiling session reveals that It is the issue of DataService class.I dont know How do I convince  Adobe to investigate this issue.
    Regards,
    Dharmendra

  • Crystal Reports 2008 - Report Load error - Memory Leak Error?

    Hello
    <br>
    We have a problem with Crystal Reports 2008 with .NET 2.0.
    <br>
    CrystalDecisions.CrystalReports.Engine, Version=12.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304
    <br>
    The problem is that during high amount of report producing, errors in eventlog pops up and the production of reports using <br>
    Crystal Reports stops.
    <br>
    Below are examples of the three most common event logs.
    <br>
    We have tried to implement a cleanup method both as a destructor (with a global ReportDocument rdoc variable) and using direct call to cleanUpDoc() method when finished with loading doc:
    <br>
    ~IOServerClass()
    <br>
    <br>
                cleanupDoc();
    <br>
    <br>
    <br>
            private void cleanupDoc()
    <br>
    <br>
                try
    <br>
    <br>
                    if (rdoc != null)
    <br>
    <br>
                        rdoc.Close();
    <br>
                        rdoc.Dispose();
    <br>
                        rdoc = null;
    <br>
    <br>
                    this.CleanGlobalEvents();
    <br>
                    System.GC.Collect();
    <br>
    <br>
    <br>
    <br>
    The doc is loading using the "normal" method (in-process).
    <br>
    <br>
    try
    <br>
    <br>
                        rdoc = new ReportDocument();
    <br>
                        rdoc.Load(fullpathandreport); 
    <br>
    <br>
                   catch (Exception ex)
    <br>
    <br>
                    cleanupDoc();
    <br>
    <br>
    ...process doc....
    <br>
    cleanupDoc();
    <br>
    <br>
    Furthermore we have tried during Scalable tests of the system - but cannot produce the below errors ourselves. Only the customer can.
    <br>
    Please help with solving this problem.
    Is the above advisable to do?
    Should the document be loaded in another way?
    Is it a memory leak?
    <br>
    Regards
    Kristian
    <br>
    <br>
    event logs:
    <br>
    <br>
    #1
    <br>
    <br>
    Event Type:     Error
    Event Category:     None
    Event ID:     1102
    Date:          12-02-2010
    Time:          10:22:05
    User:          N/A
    Description:
    IO_ServerClass.IO_ServerPrepareReportBeforeExecute() Report load Error:
    Loading reportfile=C:\Inetpub\wwwroot\xxx\Reports\321.rpt
    Source=CrystalDecisions.CrystalReports.Engine
    Message=Load report failed.
    Stacktrace=   at
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
       at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename,
    OpenReportMethod openMethod, Int16 parentJob)
       at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)
       at xxx.IOServer2.IOServerClass.IO_ServerPrepareReportBeforeExecute(String
    WebRootRelPathNameRepName, String init, Hashtable ParmsVals, Int32 JobId, Int32 JobStep,
    Page webpage) in C:\Documents and Settings\xxx\My Documents\Visual Studio 2008\Projects\xxx.IOServer2\IOServerClassClassic.cs:line 290
    InnerSource:Analysis Server
    InnerMes:
    Error in File 321 {19463E3B-D404-45EB-88AE-5722A7FF9E90}.rpt:
    The request could not be submitted for background processing.
    InnerStack:
       at
    CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object&
    DocumentPath, Int32 Options)
       at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object&
    DocumentPath, Int32 Options)
       at
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
    <br>
    <br>
    #2
    <br>
    <br>
    IO_ServerClass.IO_ServerPrepareReportBeforeExecute() Report load Error:
    Loading reportfile=C:\Inetpub\wwwroot\xxx\Reports\321.rpt
    Source=CrystalDecisions.CrystalReports.Engine
    Message=Creating an instance of the COM
    component with CLSID {D7F5D7C3-B06C-4CAC-BC47-A06E66D2EE9B} from the IClassFactory failed
    due to the following error: 8007000e.
    Stacktrace=   at
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.CreateRptDoc()
       at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper..ctor()
       at CrystalDecisions.CrystalReports.Engine.ReportDocument.Initialize()
       at CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor()
       at Kimik.IOServer2.IOServerClass.IO_ServerPrepareReportBeforeExecute(String
    WebRootRelPathNameRepName, String init, Hashtable ParmsVals, Int32 JobId, Int32 JobStep, Page webpage) in C:\Documents and Settings\xxx\My Documents\Visual Studio 2008\Projects\xxx.IOServer2\IOServerClassClassic.cs:line 289
    <br>
    #3
    <br>
    <br>
    IO_ServerClass.IO_ServerPrepareReportBeforeExecute() Report load Error:
    Loading reportfile=C:\Inetpub\wwwroot\xxx\reports\340.rpt
    Source=CrystalDecisions.CrystalReports.Engine
    Message=Load report failed.
    Stacktrace=   at
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
       at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename,
    OpenReportMethod openMethod, Int16 parentJob)
       at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)
       at Kimik.IOServer2.IOServerClass.IO_ServerPrepareReportBeforeExecute(String
    WebRootRelPathNameRepName, String init, Hashtable ParmsVals, Int32 JobId, Int32 JobStep,
    Page webpage) in C:\Documents and Settings\xxx\My Documents\Visual Studio 2008
    \Projects\xxx.IOServer2\IOServerClassClassic.cs:line 290
    InnerSource:CrystalDecisions.ReportAppServer.ClientDoc
    InnerMes:
    Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
    InnerStack:
    at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object&
    DocumentPath, Int32 Options)
       at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object&
    DocumentPath, Int32 Options)
       at
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
    Edited by: kristians on Feb 16, 2010 2:57 PM

    Hi;
    First, ensure you have the latest service pack / hot fix for your version of Crystal Reports, and that the client has the same updates as well. Fix Pack 2.4 is the current latest, and can be downloaded from our downloads section.
    One of the errors is the Background Processing error, so have a look at the following article:
    http://www.sdn.sap.com/irj/boc/index?rid=/library/uuid/50a6f5e8-8164-2b10-7ca4-b5089df76b33&overridelayout=true
    Regards,
    Jonathan
    Follow us on Twitter u2013 http://twitter.com/SAPCRNetSup

  • Memory leak and char[] ?

    Hello all,
    I'm not sure whether this post should be here or in WebLogic section, so correct me if I'm wrong.
    I'm working on JDeveloper 11.1.1.3 while deployments are made on standalone WebLogic 10.3.3. This thing occurred in previous versions also.
    With every deployment WebLogic increases it's used memory until the famous PermGen space error, which is after about 5-6 deployments.
    I'm doing my best to understand how to use memleak detection tools. I've switched JDev and WL from Sun jdk which was used before to JRockit, same thing happens. Both JDev's memory profiler and JRockit mission control show something that I really do not understand. char[] uses around 30% of heap space and keeps growing with deployments, next is String with 8%. I never use char in app.
    Am I looking at the wrong thing? Is it normal for char[] to increase on WebLogic on deployments? Does anyone know how to check other things and what to check? Someone on other forums mentioned it would be useful to check if ApplicationContext keeps initializing over again on deployments. Does anyone know how to check this?
    One more thing, I have successfully deployed app on Tomcat, and Tomcat said there is a memory leak in app, but could not tell anything specific.
    I'm kinda lost in this :(

    It is normal for the PermGen space of the Sun's JVM to get filled after several re-deployments. PermGen stands for "permanent generational". This space is used by classes that is unlikely to need to be garbage-collected, so they are placed in this memory space that is never garbage-collected (for example, the Class instances). When you redeploy an application, a new class loader instance is used and it instantiates new Class instances that fill up the PermGen space. But why this happens on JRockit either, I could not explain.
    We have experienced memory leaks related to classes and components that use native memory. For example, we have had significant memory leak when using Oracle's JDBC OCI driver. We were not able to solve this problem, so we switched to JDBC Thin driver (which is very performant and stable today comparing to some years ago). If you are using Oracle JRockit, you can monitor the overall memory usage by the following JRockit command executed at OS command line:
    jrcmd <jrockit_pid> print_memusage>where <jrockit_pid> should be replaced by the JVM process ID.
    If you suspect existence of native memory leaks, then have a look at the article Thanks for the memory for explanations about how Java uses native memory.
    Dimitar

  • Memory Leaking message when run the log in page in Jdev 11.1.2

    Hi
    I am re design our 10g application in Jdev 11.1.2, I am using .jsf and ADF business component.
    at the moment, the project has only two pages. login and home page.
    when I run the login page, I see the message below. this is happening during the deployment process to the embeded weblogic
    <ADFContext> <getCurrent> Automatically initializing a DefaultContext for getCurrent.
    Caller should ensure that a DefaultContext is proper for this use.
    Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
    This message may be avoided by performing initADFContext before using getCurrent().
    For more information please enable logging for oracle.adf.share.ADFContext at FINEST level.
    Anyone know why?
    thanks

    Hi Timo
    Thanks for your reply, I read the thread you pointed to.
    however, I am not sure my is related to the case mentioned. I am re design the application from scratch in Jdev 11.1.2, and my adfc-config.xml is as simple as this:
    <?xml version="1.0" encoding="windows-1252" ?>
    <adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2">
    <view id="Login">
    <page>/commom/Login.jsf</page>
    </view>
    <view id="home">
    <page>/commom/home.jsf</page>
    </view>
    <control-flow-rule id="__2">
    <from-activity-id>*</from-activity-id>
    <control-flow-case id="__3">
    <to-activity-id>Login</to-activity-id>
    </control-flow-case>
    </control-flow-rule>
    <control-flow-rule id="__4">
    <from-activity-id>Login</from-activity-id>
    <control-flow-case id="__5">
    <from-outcome>success</from-outcome>
    <to-activity-id>home</to-activity-id>
    </control-flow-case>
    </control-flow-rule>
    <managed-bean id="__1">
    <managed-bean-name>backing_login</managed-bean-name>
    <managed-bean-class>com.mycompany.view.backing.login</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    </adfc-config>
    also, I am using a session filter registered in web.xml --- basically, if the page is not Login.jsf then redirect to Login.jsf page. but even though I removed the session filter.java from the web.xml , it still show the message.

  • Memory Leak with RDC (11.5.11.1732) using SetDataSource

    I believe I have identified a 20 byte memory leak each time a VB6 application calls Report.Database.SetDataSource and passes an ADO recordset (in craxdrt.dll version 11.5.11.1732 and earlier).
    I've created a simple VB application which demonstrates the problem. The program repeatedly loads a report and optionally calls SetDataSource.
    When running the program and monitoring for leaks with DebugDiag I observe the same 20 byte leak that I see in my live application if I enable calls to SetDataSource. Without the calls there is no leak.
    I have uploaded the VB source code for the test application, RPT file used for the test and the reports from DebugDiag for both the leaky and non-leaky runs to [http://www.turambar.co.uk/download/crystal/CrystalTest.zip]
    The two DebugDiag reports are as follows:
    Memory_Report__Project1.exe__10212009140853486.mht - run with no calls to SetDataSource
    Memory_Report__Project1.exe__10212009140007780.mht - run with calls to SetDataSource
    Looking at the second of these reports it can be seen that the leak originates at "Project1!Form1::SDS+ec C:\CrystalTest\Form1.frm @ 89". That function contains a single line of code which calls SetDataSource.
    Our live application is using CRXI R1 RTM (which has other leaks too but those disappear when upgrading to SP4).
    For this test application I have used CRXI R2 with FixPack 5.6 and the error still manifests.
    Option Explicit
    Dim objApp As CRAXDRT.Application
    Private Sub Form_Load()
        Set objApp = New CRAXDRT.Application
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
        Set objApp = Nothing
    End Sub
    Private Sub Command1_Click()
        Dim i As Long
        Command1.Enabled = False
        DoEvents
        For i = 1 To CLng(Text1.Text)
            Call Stress
        Next
        Command1.Enabled = True
    End Sub
    Sub Stress()
        Dim objRep As CRAXDRT.Report
        Dim objRec As ADODB.Recordset
        Set objRec = New ADODB.Recordset
        Set objRep = objApp.OpenReport("test.rpt")
        If Check1.Value = vbChecked Then
             Call SDS(objRep, objRec)
        End If
        Set objRep = Nothing
    End Sub
    Sub SDS(objRep As CRAXDRT.Report, objRec As ADODB.Recordset)
        Call objRep.Database.SetDataSource(objRec)
    End Sub

    I've retested using VB.NET 2005. Still using ADO recordsets to pass the data through to Crystal.
            Dim objRep As ReportDocument
            Dim objRec As ADODB.Recordset
            Dim objConn As ADODB.Connection
            objConn = New ADODB.Connection
            objConn.Open("Provider=SQLOLEDB.1;Data Source=DB-HOST;Initial Catalog=TestDB", "simon", "mypass")
            objRec = New ADODB.Recordset
            objRec.CursorLocation = ADODB.CursorLocationEnum.adUseClient
            objRec.CursorType = ADODB.CursorTypeEnum.adOpenStatic
            objRec.LockType = ADODB.LockTypeEnum.adLockBatchOptimistic
            objRec.Open("SELECT TOP 1 * FROM simon.mytable", objConn)
            objRep = New ReportDocument
            objRep.Load("test.rpt")
            If Check1.CheckState = System.Windows.Forms.CheckState.Checked Then
                objRep.SetDataSource(objRec)
            End If
            objRep.Close()
            objRep.Dispose()
            objRep = Nothing
            objRec.ActiveConnection = Nothing
            objRec.Close()
            objRec = Nothing
            objConn.Close()
            objConn = Nothing
    With the calls to SetDataSource in place DebugDiag is again reporting various leaks which do not happen when that call is not made. I'm not too hot on .NET code so I hope I'm doing all the right things to clear down before I do the leak analysis. My main calling form forces GC cleanup before I start the dump:
            GC.Collect()
            GC.WaitForPendingFinalizers()
    I'm running this on Windows Server 2003 R2 SP2 with hotfix 939527 installed. For Crystal I installed CrystalReports11_5_NET_2005.msi from the 5.6 fixpack.
    Simon

  • Is this a memory leak issue ?

    We are using Jdev10g + BC4J + Struts + JSP to build our enterprise application,
    but when the application running some days in our Application Server(RedHat AS3-86, with 4GB RAM), the memory consumed is serious ! we doubt and worry
    about maybe our application suffer the memory leak problem, so we want to know have the command to find out whether our application caused the memory leak
    issue and which program is the major murderer for memory.
    In EM console , the memory utilization chart have big memory consumed in "other" legend ? the "other" legend is mean what ? I cannot find the consumer process in system level through ps command ? it seems disapear ! but after I reboot the server , the "other" legend is clear !

    The second scenario is, as we perform some deployment activity on 10g, the memory usage chart shows a sharp consumption of memory about 1.5GB .the loss memory almost be display in "other" legend chart !
    Please give us some advice , thanks in advance

  • Memory leak when running in database

    I am somewhat new to java and very new to java in the db. I just ran into a problem with what appears to be a memory leak. I have a substantial java program used to parse XML files. I developed this app in jDeveloper and for testing purposes created a method that would connect to the database so that I could run the app from jDeveloper instead of having to deploy it everytime i needed to run it. When deployed the application uses the existing connection to connect to the db.
    I am running Oracle 9i on a windows 2k machine.
    When I run the application through jDeveloper the javaw.exe process takes up roughly 20mb of RAM and doesn't increase. I also watched the oracle.exe process and there was little to no increase in the RAM that it was using.
    When deployed to a db and run through a java stored procedure the RAM used by the oracle.exe process sky rockets, jumping from 70mb to 139mb at about 2mb per second.
    Hopefully this will make some sense to someone as posting code would be somewhat difficult considering the size of the project. Is there something I'm missing? I've tried calling the garbage collector explicity but it has had no effect. I have made sure that all my cursors, statements, resultsets are closing. I have a number of Vecotors which are all being de-allocated(as far as i can tell). Are there any known issues with the garbage collector in a 9i DB?
    Thanks
    Butch Wesley

    The size of oracle.exe is not an indication of how the Java VM GC works; so you are not comparing apples to apples. It'll be too long to explain here but in my upcoming book (see hereafter), I gave a detailled explanation of the various memory areas the Java VM uses and how these are GCed and also how you can meausre their size (not all, though).
    In short you want to use OracleRuntime methods such as
    OracleRuntime.getSessionSize(); --> get he current size of Sessionspace
    OracleRuntime.getNewspaceSize(); --> get he current size of Newspace
    there are other memory areas described in the book
    http://www.oracle.com/technology/pub/articles/mensah_dws.html
    http://www.elsevier.com/wps/find/bookdescription.cws_home/706089/description#description
    Sample chapter: http://www.oracle.com/technology/books/pdfs/mensah_ch1.pdf
    Kuassi

  • Memory leak in Digital Waveform

    I have a program with a pretty serious memory leak that uses up all my system RAM and crashes my computer within a few hours of running the program.
    The program takes an array of U16s where each bit represents a digital signal. The VI converts each U16 to a digital array and groups the resulting 16 digital signals into different busses for display on a Digital Waveform Graph. The profiler doesn't show any excessive memory usage in the VI. I put the whole VI into a Diagram Disable structure and moved a few pieces out at a time, and eventually the only thing inside the disable structure was the Digital Waveform Graph indicator. When this indicator is enabled, the memory usage of my system rises slowly and steadily until it uses all available RAM and crashes the system.
    If I replace the Digital Waveform Graph indicator with a cluster, the memory leak still occurs (but much more slowly). I thought using the cluster fixed the leak until I reran the VI overnight while using the cluster instead of the Graph.
    If I stop the VI before all the RAM is used, the RAM will not release until I close LabVIEW entirely. Once LabVIEW closes, the memory is released slowly and exponentially unless I use the "End Process" option in Task Manager.
    This is a continuation of a previous post I made where I thought the memory leak was due to problems transferring data from an FPGA for display.
    I ran the MemLeak vi (attached) on two separate systems, both running LV 2013 SP1, and got the same results. The memory leak is noticeably fast when using the enable structure connected to the Digital Waveform Graph but still present when using the cluster of Digital Waveforms.
    Attachments:
    MemLeak.vi ‏33 KB
    LV shutdown.PNG ‏101 KB

    Thanks for the replies.
    In response to John's points:
    1. The attached VI is a simplification of an FPGA VI that read a fixed number of samples from a DMA FIFO using an FPGA Interface Invoke Method approach. I'm using a card (PXI-7842R) that doesn't allow use of the Acquire Read Region method. In order to allow people without an FPGA card to hopefully see the issue, I replaced it with the for loop. Assuming that this for loop does leak (which I don't believe it does; as altenbach said, it's a fixed size allocation that LV should be able to reuse), why would I see a difference in the leak magnitude depending on which indicator I connect to the array?
    2. I've previously reviewed the document you referenced, and I don't see any errors from it present in my code; do you? I have no global/local variables, strings/arrays displayed on front panel, property nodes, coercion dots, altered memory sizes, resizing/reallocations, etc. I don't see any weird buffer allocations. I used to have the conversion from U16 array to digital waveforms in a subVI but placed it on the same diagram to allow incremental use of the Diagram Disable structure.
    3. The forum post you referenced had many of the items discussed above, plus it was solved using an RT FIFO. I'm not passing data from a producer to a consumer; I'm just displaying acquisition results. I guess you could say I'm processing the data, but I'm really only converting it to a format that the indicator will take; I'm not operating on the data.
    It's good that the leak doesn't show up in 2014, but my SSP runs out in a couple of days; I never got an upgrade to 2014. This is the last item remaining on the development path, and we've already spent ~$4k to upgrade the controllers enough to display the acquisition without dragging down the CPU. I will be in hot water if I spent all that money and then end up having to scrap the display...

  • Possible memory leak in TagFileTagInfo class

    Hello,
    Our application is experiencing a memory leak in Weblogic, which is not happening in other application servers.
    We are running Weblogic server 10.3 using the distributed jsf 1.2
    Eclipse Memory Analyzer clearly points to TagFileTagInfo class as retaining a Map which holds all the memory. Furthermore, it shows that said map (called _tagFileInfoMap) is holding FileTagFileInfo class instances.
    It could be possible that our application were doing something wrong, and that would cause the described behavior, however I doubt that as the other application servers where our application is deployed do not present this problem.
    Any suggestion on how we should proceed to fix this problem?
    Thanks
    Juan

    Hi,
    Was this issue resolved by using wlappc?
    Were you able to compile the tag files with wlappc? I tried compiling the jsps using wlappc, but it seems that the tool expects an ejb-jar file.
    Any help on this is greatly appreciated.
    Thanks
    Hareesh

  • Memory leak - Node clean up?

    Hey guys,
    I'm running into a memory leak and was reading some other threads where people were having their own memory leaks. Is there a way through NetBeans to track memory usage or something to figure out what is consuming memory? My memory leak sounds similar to this gentleman's: [http://forums.sun.com/thread.jspa?threadID=5409788] and [http://forums.sun.com/thread.jspa?threadID=5357401]
    Setup:
    I have a mySQL database call that returns a bunch of results and in the end converts each record into its own custom node which then gets put into a sequence, which is then given to a listEventsNode (a custom node VBox) and finally put on the stage. As a note each custom node has its own animations, events, images, and shapes.
    listEventsNode gets its list of custom nodes from a publicly accessible sequence variable where its contents is simply cleared and new nodes are added by the next MySQL search. I cleared the eventSequence by using delete myCustomNodeSequence.
    I even go as far as setting the same sequence null (myCustomNodeSequence = null;). This unfortunately doesn't make any difference in terms of memory usage. java.exe will reach 100MB then crash.
    the listEventsNode is bound with eventSequence, this is to ensure that changes to the sequence of custom nodes are immediately reflected in the Vbox (listEventsNode).
    ListEventsNode is on the main stage and there is only one instance of it, but what changes is the content in the eventSequence. Even if I clear the contents of the eventSequence, it doesn't appear to "clean up" the memory.
    The way I'm doing it is probably breaking every rule in the book. I should probably make it so listEventsNode is its own object which isn't bound to any external variables (such as eventSequence) and in the event a new search takes place I simply delete the listEventsNode and when a new search is complete, it re-adds the node to the scene. Am I on the right track here?
    Is there a good "best practices" for JavaFX? For example, a typical mistake that would cause a node to "recreate" itself over and over again in memory when the programmer may have thought it was simply being "written over"? Does this make sense? Because I have a feeling that my application is not deleting the custom nodes that were created for the eventSequence and even if the eventSequence is "deleted" and re-assigned with new custom nodes, the original or previous custom nodes are still residing in memory.
    Let me know if you need to see the source or any logs/readouts from NetBeans during execution if this will help.
    Thanks for taking the time to read this.
    Cheers,
    Nik.

    Your heap usage looks pretty typical. In scenario 5, I think you are simply running out of memory. I doubt its a leak inside the javafx runtime (although it could be).+
    I think you might be right. It's running out of memory and I may have to increase the heap size.
    Say that my application legitimately needs more memory to operate, and I need to increase the heap size. How does this work if you have a fully deployed application? Is the heap size information built into the application itself so that when the jvm runs the application, it allocates the appropriate amount of memory? I've increased the heap size from 64mb to 128mb, and I added many many nodes and I still crapped out when I hit the 128mb ceiling. I changed it to 512 and I added a TON of nodes (when you click a node from the VBox, it adds a miniature version of the node to the scene graph) and I'm just under 200MB. I plan on setting a cap to how many concurrent additional nodes can be placed on the scene graph, which will help.
    If you deploy this as is, how does the application utilize memory if you've adjusted the heap size? Or is this specific to the IDE only?
    Do you know what objects are on the heap? Can you compare what objects are on the heap from one scenario to the next?+
    Where can I find this information in NetBeans profiler?
    Do you have a lot of images? Are they thumbnails or are they images scaled down to thumbnail size?+
    Actually, yes I am using a scaled down thumbnail size of the original image. The original image files are PNG format, 60x60 pixels, and about 8kb in size. I simply use the "FitWidth:" property to scale the image down. I was doing some more reading before I went to bed and I was going to use an alternative way to scale the image down. By simply doing this, the initial heap usage off the 500 node search went down form 44MB to 39MB. It's still slower on consecutive searches versus the first, but it's stable.
    Edit: I've used the width: property to downsize the image and it looks like I'm not running into that heap crash as fast but this poses a problem where I need to have the full size of the image available when a custom node is selected. What's the best way of doing this? I should probably store the image location in a string and recreate the image when I need it in full size since there is only one full size version of it on the screen at a given time. I've also completely disabled the addition of a picture in my custom node; it appears these images don't take up a lot of space since they are very small. I save an additional 3-5MB in heap space if I completely disable the pictures and have just the nodes themselves. Each node has animation effects (i.e. fading in/out of colors, changing of color if selected). Although the class itself is pretty dang long in comparison with any other classes I have.
    Are you clearing the nodes from your scene content before the search or after? If after, are you creating the new nodes before clearing out the old?+
    Yes, I have a function that reassigns the stage.scene.content sequence omitting the custom vbox that houses the list of custom nodes prior to the next search. The "cleanUp()" function is called prior to the insertion of the new custom vbox.
    It might be useful to turn on verbose garbage collection (-verbose:gc on the java command line) just to see what's happening in gc.+
    What is this exactly? I tried putting in System.gc() but I'm not sure if I'm seeing any difference yet.
    Edit: Actually, I've placed System.gc() after I run my cleanUp() function and I'm noticing the heap usage is more conservative. Seems to clear more often than it did before. But yes, the underlying problem of my running out of memory is to be looked at.
    You might also (just as an experiment) force garbage collection between your searches.+
    This seems to work well with smaller result sets. However, a search that produces over 500 custom nodes in a custom VBox uses more than half of the available heap size, so the next time it tries to do the same search it just crashes like you mentioned in your first point. The memory simply runs out. What I don't get is if I "delete" the custom vbox prior to inserting it, the memory doesn't seem to be released immediately. From what I'm reading about the garbage collector, it doesn't exactly do things in a prompt fashion.

  • OPMN vs Standalone OC4j (memory leak)

    I run the same servlet application using standalone OC4J instance on solaris without any problem.
    Trying to run the same application deployed in oracle enterprise (opmn) console causes memory leak. I see a lot of new classes allocated on each servlet invocation related to oracle.xml.* package and org.apache.axis.* (servlet uses axis to download attachment).
    Did anybody see similar issues. Any thought are welcome.
    thanks
    Roman

    To answer myself in case somebody was interested how to resolve this issue :
    Using different xml parser (for ex. crimson, but most likely any other would be fine too) eleminated the problem.
    i.e. adding the followning java system property
    -Djavax.xml.parsers.SAXParserFactory=org.apache.crimson.jaxp.SAXParserFactoryImpl

  • XSLT processing and Memory Leak

    I have the following code for a Simple XSLT Transformation from one form of XML to another, the Size of the XML and the XSLT file are very small( few KB).
    As you can see I'm explicitly setting everything to null just to make sure the objects get GC'd.
    When I run the transformation on my local m/c running Windows XP on WSAD5.0 there are no memory leak issues, but when I deploy the Same app on our Server running WSAD 5.1 on Solaris, I see memory issues and finally throws an OutOfMemory Exception.
    Any Ideas would be appreciated.
         public String translate( String xml, String xsltFileName) throws Exception{
              String xmlOut = null;
              File fXslt = null;
              ByteArrayOutputStream baos = null;
              javax.xml.transform.Source xmlSource = null;
              javax.xml.transform.Source xsltSource = null;
              javax.xml.transform.Result result = null;
              InputStream isXML = null;
              javax.xml.transform.TransformerFactory transFact = null;
              javax.xml.transform.Transformer trans = null;
              Templates cachedXSLT = null;
              try{
              //     String classname = System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.processor.TransformerFactoryImpl");
                   String classname = System.getProperty("javax.xml.transform.TransformerFactory");
                   System.out.println( "******* TRANSFORMER CLASS ***** = "+classname);
                   isXML = new ByteArrayInputStream( xml.getBytes());
                   fXslt = new File(xsltFileName);
                   baos = new ByteArrayOutputStream();
                   xmlSource =
                             new javax.xml.transform.stream.StreamSource( isXML);
                   xsltSource =
                             new javax.xml.transform.stream.StreamSource( fXslt);
                   result =
                             new javax.xml.transform.stream.StreamResult( baos);
                   // create an instance of TransformerFactory
                   transFact = javax.xml.transform.TransformerFactory.newInstance();
                   //transFact.setAttribute("http://xml.apache.org/xalan/features/incremental", Boolean.TRUE);
                   cachedXSLT = transFact.newTemplates(xsltSource);
                   trans = cachedXSLT.newTransformer();
                   //trans =     transFact.newTransformer(xsltSource);
                   trans.transform(xmlSource, result);
                   xmlOut = baos.toString();
    System.out.println("xmlout=***" + xmlOut);
              catch( Exception e){
                   System.out.println( e.getMessage());
                   throw e;
              finally{
                   trans = null;
                   //transFact = null;
                   result = null;
                   xsltSource = null;
                   xmlSource = null;
                   baos.close();
                   baos = null;
                   fXslt = null;
                   isXML.close();
                   isXML = null;
              return xmlOut;
         }

    scream3r wrote:
    All code work's as well, but i have a memory leak by using structure (by creating a new MyStructure());Presumably this really is java code. As such the following are the only possibilities
    1. You do not have a memory leak. You are misreading a tool (probably task manager) and assuming a leak exists when it doesn't.
    2. You need to call something either on MyStructure or by passing it to another class to free it. See the documentation.
    3. The leak is caused by something else.

Maybe you are looking for

  • Price & Quantity change in COsting

    Dear All, After saving the sale order and costing, the quantity and price is automatically changed in the costing. After re open the sale order, the changes are carried, what is the problem and is there any configuration level changes? Urgent one, pl

  • HP Pavilion p7-1421 Desktop PC BEATS AUDIO not working.

    Hi, new here with thankfully my first problem with the desktop in the subject line. Somewhere along the way, the Beats Audio stopped working correctly. The Equalizer sliders will not move at all, and the "Test Speakers" button will highlight the left

  • In the message class M7 i NEED TO CHANGE THE MESSAGE 301 FROM E to w.

    In the program LMBGBFES I want to change the mesage e301 to w301 in the enhancement point but sap is not allowing to do so. CAN YOU GIVE A SOLUTION TO HOW TO DO IT. with regards , Mahasweta Mitra

  • DVD not showing up in Finder

    When I pop in a blank DVD, it doesn't show up in my finder even though I have CDs, DVDs, and Ipods enabled in the finder preference under sidebar.

  • (wanted) Pop ups open in a new tab

    I'm having trouble with Safari (5.0.4), when I click on a link such as the choose a date link when booking a hotel/flight or using my banks website and the little pop up should appear that allows you to choose a date then disappears once you've done