Memory leak during copyPixels

Hi,
I am making a custom renderer using the copyPixels function for my
Haxe/Flash game. So I have this kind of code :
buffer.bitmapData.copyPixels(m_CurrentSkin, RECT3, POINT, null, null,
true);
where :
-buffer is the bitmap where all my scene's objects are drawn
-m_CurrentSkinis the BitmapData that contains the current frame of the
object to be drawn
Every time m_CurrentSkin contains a BitmapData that have never been
drawn (the first time that an animation frame is drawn for example), I
have a memory leak that is not garbage.
However if m_CurrentSkin contains a BitmapData that have already been
drawn (when the animation is played a second time for example), there
isn't any memory leak.
If I comment this line there is no leak so the problem comes from
there.
It seems that a copy of the BitmapData is cached in memory but I have
checked in my code and there is no cacheAsBitmap explicitely set to
true.
Anyone have idea of what is happening?
Thank you,
Régis.

How do you know it's leaking? As I copyPixels and watch the profile in FlashBuilder I see flash caching and it doesn't garbage collect until it feels it's necessary. If it continuously acceesses the same thing it's not behaving improper to continuously keep it in cache.
That being said, if you press the manual garbage collection button and don't see it release within a few seconds, it might be a leak. The only way you'll really know is to isolate this, clear the bitmapdata objects and null them out while pressing garbage collection to see if flash properly disposes of the bitmapdata instances. Just make sure you're disposing of them properly.

Similar Messages

  • Memory leak during insert on PocketPC 2002

    We've built an application using an Oracle Lite 5.0.1 database using an ODBC interface. We've stolen most of the code from:
    C:\OraHome1\Mobile\Sdk\wince\samples\ODBC\sample.cpp
    We've found that there appears to be a memory leak during inserts (haven't fully analyzed updates/gets). The thing leaks roughly X bytes per insert where numBytesInInsertString < X < (2.5 * numBytesInInsertString)
    Has anyone else seen this? It becomes really apparent during out load from XML method where we walk through an xml document and perform roughly 7000 inserts in a row (commit at the end). The memory leak is not coming from the XML stuff, already tested for that.
    Paul Runstedler
    Intrexa Corp.

    I've went back to the sample to confirm my suspicions and sure enough there is memory being leaked. I loaded up the sample workspace in "[ORACLEHOME]\Mobile\Sdk\wince\samples\ODBC" and modified the sample.cpp code ever so slightly. Instead of performing one insert, one update and one select, it performs 5 iterations of 2000 inserts and skips over the updates and deletes. I've placed some memory reporting functionality after each iteration of inserts to report the free memory and this is what I get
    After Connection and creation of table Free: 19742720 Used: 8237056
    After iteration 1, 2000 inserts Free: 19439616 Used: 8540160
    After iteration 2, 2000 inserts Free: 19509248 Used: 8470528
    After iteration 3, 2000 inserts Free: 19439616 Used: 8540160
    After iteration 4, 2000 inserts Free: 19509248 Used: 8470528
    After iteration 5, 2000 inserts Free: 19283968 Used: 8695808
    After commit Free: 19283968 Used: 8695808
    As you can see, there is a loss of about 458700 bytes (about half a meg) over the 5 iterations. Thats about 46 bytes per insert. Not a lot for single insert, but this will eventually cripple any application that wants to perform a high number of inserts.
    Any help would be appreciated.
    Thanks,
    Paul Runstedler
    Intrexa Corp.
    PS: The following is the modified method in sample.cpp
    BOOL CSampleApp::InitInstance()
    COLiteDB db;
    MEMORYSTATUS memInfo;
    CString message;
    if (db.Connect())
    db.Execute (_T ("CREATE TABLE TT (COL1 VARCHAR2(40), COL2 VARCHAR2 (50))"));
    if (*db.GetError())
    AfxMessageBox (db.GetError());
    memInfo.dwLength = sizeof(memInfo);
    GlobalMemoryStatus(&memInfo);
    // Report memory usage
    message.Format( _T("After Connection and creation of table  Free: %d Used: %d\n"),
    memInfo.dwAvailPhys, (memInfo.dwTotalPhys - memInfo.dwAvailPhys));
    TRACE(message);
    CString insertString;
    for( int j = 0; j < 5; j ++ ) {
    for( int i = 0; i < 2000; i ++ ) {
    insertString.Format( _T("INSERT INTO TT VALUES (\'TESTINGTESTING123%d\', \'TEST2ANDBLAJHBLAJBLAJKBJAJAJAJAJJAJAJAJAJA\')") );
    db.Execute (insertString);
    if (*db.GetError()) {
    AfxMessageBox (db.GetError());
    memInfo.dwLength = sizeof(memInfo);
    GlobalMemoryStatus(&memInfo);
    // Report memory usage
    message.Format( _T("After iteration %ld, 2000 inserts  Free: %d Used: %d\n"),
    (j+1), memInfo.dwAvailPhys, (memInfo.dwTotalPhys - memInfo.dwAvailPhys));
    TRACE(message);
    #if 0
    db.Execute (_T ("UPDATE TT SET COL2 = 'TESTING ORACLE LITE' WHERE COL1='TEST1'"));
    if (*db.GetError())
    AfxMessageBox (db.GetError());
    CSQLResult* pres = db.Execute (_T ("SELECT * FROM TT"));
    if (pres != NULL)
    const CRowObj* pobj = pres->Fetch();
    while (pobj)
    CString str = (LPCTSTR)pobj->GetAt (0);
    str += TEXT (" ");
    str += (LPCTSTR)pobj->GetAt (1);
    AfxMessageBox (str);
    pobj = pres->Fetch();
    delete pres;
    #endif
    if( db.Commit() != TRUE ) {
    AfxMessageBox( _T("couldn't commit") );
    memInfo.dwLength = sizeof(memInfo);
    GlobalMemoryStatus(&memInfo);
    // Report memory usage
    message.Format( _T("After commit  Free: %d Used: %d\n"),
    memInfo.dwAvailPhys, (memInfo.dwTotalPhys - memInfo.dwAvailPhys));
    TRACE(message);
         // Since the dialog has been closed, return FALSE so that we exit the
         // application, rather than start the application's message pump.
         return FALSE;
    }

  • Custom MediaStreamSource and Memory Leaks During SampleRequested

    Greetings,
    I have a nasty memory leak problem that is causing me to pull my hair out.
    I'm implementing a custom MediaStreamSource along with MediaTranscoder to generate video to disk. The frame generation operation occurs in the SampleRequested handler (as in the MediaStreamSource example). No matter what I do - and I've tried a
    ton of options - inevitably the app runs out of memory after a couple hundred frames of HD video. Investigating, I see that indeed GC.GetTotalMemory reports an increasing, and never decreasing, amount of allocated RAM. 
    The frame generator in my actual app is using RenderTargetBitmap to get screen captures, and is handing the buffer to MediaStreamSample.CreateFromBuffer(). However, as you can see in the example below, the issue occurs even with a dumb allocation
    of RAM and no other actual logic. Here's the code:
    void _mss_SampleRequested(Windows.Media.Core.MediaStreamSource sender, MediaStreamSourceSampleRequestedEventArgs args)
    if ( args.Request.StreamDescriptor is VideoStreamDescriptor )
    if (_FrameCount >= 3000) return;
    var videoDeferral = args.Request.GetDeferral();
    var descriptor = (VideoStreamDescriptor)args.Request.StreamDescriptor;
    uint frameWidth = descriptor.EncodingProperties.Width;
    uint frameHeight = descriptor.EncodingProperties.Height;
    uint size = frameWidth * frameHeight * 4;
    byte[] buffer = null;
    try
    buffer = new byte[size];
    // do something to create the frame
    catch
    App.LogAction("Ran out of memory", this);
    return;
    args.Request.Sample = MediaStreamSample.CreateFromBuffer(buffer.AsBuffer(), TimeFromFrame(_FrameCount++, _frameSource.Framerate));
    args.Request.Sample.Duration = TimeFromFrame(1, _frameSource.Framerate);
    buffer = null; // attempt to release the memory
    videoDeferral.Complete();
    App.LogAction("Completed Video frame " + (_FrameCount-1).ToString() + "\n" +
    "Allocated memory: " + GC.GetTotalMemory(true), this);
    return;
    It usually fails around frame 357, with GC.GetTotalMemory() reporting 750MB allocated.
    I've tried tons of work-arounds, none of which made a difference. I tried putting the code that allocates the bytes in a separate thread - no dice.  I tried Task.Delay to give the GC a chance to work, on the assumption that it just had no time
    to do its job. No luck.
    As another experiment, I wanted to see if the problem went away if I allocated memory each frame, but never assigned it to the MediaStreamSample, instead giving the sample (constant) dummy data. Indeed, in that scenario, memory consumption stayed
    constant. However, while I never get an out-of-memory exception, RequestSample just stops getting called around frame 1600 and as a result the transcode operation never actually returns to completion.
    I also tried taking a cue from the SDK sample which uses C++ entirely to generate the frame. So I passed the buffer as a Platform::Array<BYTE> to a static Runtime extension class function I wrote in C++.
    I won't bore you with the C++ code, but even directly copying the bytes of the array to the media sample using memcpy still had the same result! It seems that there is no way to communicate the contents of the byte[] array to the media sample without
    it never being released.
    I know what some will say: the difference between my code and the SDK sample, of course, is that the SDK sample generates the frame _entirely_ in C++, thus taking care of its own memory allocation and deallocation. Because I want to get
    the data from RenderTargetBitmap, this isn't an option for me. (As a side note, if anyone knows if there's a way to get the contents of an RT Window using DirectX, that might work too, but I know this is not a C++ forum, so...). But more importantly,
    MediaStreamSource and MediaStreamSample are managed classes that appear to allow you to generate custom frames using C# or other managed code. The MediaStreamSample.CreateFromBuffer function appears to be tailored for exactly what I want. But there appears
    to be no way to release the buffer when giving the bytes to the MediaStreamSample. At least none that I can find.
    I know the RT version of these classes are new to Windows 8.1, but I did see other posts going back 3 years discussing a similar issue in Silverlight. That never appears to have been resolved.
    I guess the question boils down to this: how do I safely get managed data, allocated during the SampleRequested handler, to the MediaStreamSample without causing a memory leak? Also, why would the SampleRequested handler just stop getting called
    out of the blue, even when I artificially eliminate the memory leak problem?
    Thanks so much for all input!

    Hi Rob - 
    Thanks for your quick reply and for clarifying the terminology. 
    In the Memory Usage test under Analyze/Performance and Diagnostics (is that what you mean?) it's clear that each frame of video being created is not released from memory except when memory consumption gets very high. GC will occasionally kick in, but eventually
    it succumbs.
    Interestingly, if I reduce the frame size substantially, say 320x240, it never runs out of RAM no matter how many frames I throw at it. The Memory Usage test, however, shows the same pattern. But this time the GC can keep up and release the RAM.
    After playing with this ad nauseum,  I am fairly convinced I know what the problem is, but the solution still escapes me. It appears that the Transcoder is requesting frames from the MediaStreamSource (and the MediaStreamSource is providing them via
    my SampleRequested handler) faster than the Transcoder can write them to disk and release them. Why would this be happening? The MediaStreamSource.BufferTime property is - I thought - used to prevent this very problem. However, changing the BufferTime seems
    to have no effect at all - even changing it to ZERO doesn't change anything. If I'm right, this would explain why the GC can't do its job - it can't release the buffers I'm giving to the Transcoder via SampleRequested because the Transcoder won't give them
    up until it's finished transcoding and writing them to disk. And yet the transcoder keeps requesting samples until there's no more memory to create them with.
    The following code, which I made from scratch to illustrate my scenario, should be air-tight according to everything I've read. And yet, it still runs out of memory when the frame size is too large. 
    If you or anyone else can spot the problem in this code, I'd be thrilled to hear it. Maybe I'm omitting a key step with regard to getting the deferral? Or maybe it's a bug in the back-end? Can I "slow down" the transcoder and force it to release samples
    it's already used?
    Anyway here's the new code, which other than App.cs is everything. So if I'm doing something wrong it will be in this module:
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Threading.Tasks;
    using System.Linq;
    using System.Runtime.InteropServices.WindowsRuntime;
    using System.Diagnostics;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    using Windows.UI.Popups;
    using Windows.Storage;
    using Windows.Storage.Pickers;
    using Windows.Storage.Streams;
    using Windows.Media.MediaProperties;
    using Windows.Media.Core;
    using Windows.Media.Transcoding;
    // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
    namespace MyTranscodeTest
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    MediaTranscoder _transcoder;
    MediaStreamSource _mss;
    VideoStreamDescriptor _videoSourceDescriptor;
    const int c_width = 1920;
    const int c_height = 1080;
    const int c_frames = 10000;
    const int c_frNumerator = 30000;
    const int c_frDenominator = 1001;
    uint _frameSizeBytes;
    uint _frameDurationTicks;
    uint _transcodePositionTicks = 0;
    uint _frameCurrent = 0;
    Random _random = new Random();
    public MainPage()
    this.InitializeComponent();
    private async void GoButtonClicked(object sender, RoutedEventArgs e)
    Windows.Storage.Pickers.FileSavePicker picker = new Windows.Storage.Pickers.FileSavePicker();
    picker.FileTypeChoices.Add("MP4 File", new List<string>() { ".MP4" });
    Windows.Storage.StorageFile file = await picker.PickSaveFileAsync();
    if (file == null) return;
    Stream outputStream = await file.OpenStreamForWriteAsync();
    var transcodeTask = (await this.InitializeTranscoderAsync(outputStream)).TranscodeAsync();
    transcodeTask.Progress = (asyncInfo, progressInfo) =>
    Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
    _ProgressReport.Text = "Sourcing frame " + _frameCurrent.ToString() + " of " + c_frames.ToString() +
    " with " + GC.GetTotalMemory(false).ToString() + " bytes allocated.";
    await transcodeTask;
    MessageDialog dialog = new MessageDialog("Transcode completed.");
    await dialog.ShowAsync();
    async Task<PrepareTranscodeResult> InitializeTranscoderAsync (Stream output)
    _transcoder = new MediaTranscoder();
    _transcoder.HardwareAccelerationEnabled = false;
    _videoSourceDescriptor = new VideoStreamDescriptor(VideoEncodingProperties.CreateUncompressed( MediaEncodingSubtypes.Bgra8, c_width, c_height ));
    _videoSourceDescriptor.EncodingProperties.PixelAspectRatio.Numerator = 1;
    _videoSourceDescriptor.EncodingProperties.PixelAspectRatio.Denominator = 1;
    _videoSourceDescriptor.EncodingProperties.FrameRate.Numerator = c_frNumerator;
    _videoSourceDescriptor.EncodingProperties.FrameRate.Denominator = c_frDenominator;
    _videoSourceDescriptor.EncodingProperties.Bitrate = (uint)((c_width * c_height * 4 * 8 * (ulong)c_frDenominator) / (ulong)c_frNumerator);
    _frameDurationTicks = (uint)(10000000 * (ulong)c_frDenominator / (ulong)c_frNumerator);
    _frameSizeBytes = c_width * c_height * 4;
    _mss = new MediaStreamSource(_videoSourceDescriptor);
    _mss.BufferTime = TimeSpan.FromTicks(_frameDurationTicks);
    _mss.Duration = TimeSpan.FromTicks( _frameDurationTicks * c_frames );
    _mss.Starting += _mss_Starting;
    _mss.Paused += _mss_Paused;
    _mss.SampleRequested += _mss_SampleRequested;
    MediaEncodingProfile outputProfile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Ntsc);
    outputProfile.Audio = null;
    return await _transcoder.PrepareMediaStreamSourceTranscodeAsync(_mss, output.AsRandomAccessStream(), outputProfile);
    void _mss_Paused(MediaStreamSource sender, object args)
    throw new NotImplementedException();
    void _mss_Starting(MediaStreamSource sender, MediaStreamSourceStartingEventArgs args)
    args.Request.SetActualStartPosition(new TimeSpan(0));
    /// <summary>
    /// This is derived from the sample in "Windows 8.1 Apps with Xaml and C# Unleashed"
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="args"></param>
    void _mss_SampleRequested(MediaStreamSource sender, MediaStreamSourceSampleRequestedEventArgs args)
    if (_frameCurrent == c_frames) return;
    var deferral = args.Request.GetDeferral();
    byte[] frameBuffer;
    try
    frameBuffer = new byte[_frameSizeBytes];
    this._random.NextBytes(frameBuffer);
    catch
    throw new Exception("Sample source ran out of RAM");
    args.Request.Sample = MediaStreamSample.CreateFromBuffer(frameBuffer.AsBuffer(), TimeSpan.FromTicks(_transcodePositionTicks));
    args.Request.Sample.Duration = TimeSpan.FromTicks(_frameDurationTicks);
    args.Request.Sample.KeyFrame = true;
    _transcodePositionTicks += _frameDurationTicks;
    _frameCurrent++;
    deferral.Complete();
    Again, I can't see any reason why this shouldn't work. You'll note it mirrors pretty closely the sample in the Windows 8.1 Apps With Xaml Unleashed book (Chapter 14). The difference is I'm feeding the samples to a transcoder rather than a MediaElement (which,
    again should be no issue).
    Thanks again for any suggestions!
    Peter

  • Memory leaks during child window close

    Hi All,
       We have a tool that generates code for WPF application. In one of the applications WPF main window displays a child window in the form of a tab. The main window here can hold multiple child windows. I did a small test. I opened main window and
    took memory snapshot with the help of .Net memory profiler. Opened child window and closed it immediately. I took snapshot again and compared with the previous one. To my surprise , many new objects/collections have been active in the heap and due to this
    memory consumption got increased almost exponentially.  If I open and close more and more child windows then memory consumption is keep on increasing.
    During child window close , I am performing all the clean up like clearing all collections , hashmaps etc. As per the suggestions mentioned in forums , I am taking care of cleaning up all the members data like DispatcherTimer , unregistering event handlers
    etc. But still memory is not being freed up even after closing the child window. As per the profiler output most of the memory has been occupied by Hashtable , Hastable.bucket[]. Profiler even reported few pinned instances as well but it looks everything is
    evident from framework API not from my code. I could see styles, controltemplates , System resources etc as active and reachable objects.
    I am just wondering am I getting affected by framework flaws or could there be anything I can do in my source to get rid of this memory leak. Request your comment and appreciate your help on this.
    Thanks,
    Brahmaji.

    Hi ,
     Thanks for the response. Basically I first opened parent panel which is of type Window. It included menu , toolbar etc. For menu/toolbar events it opens child windows which gets displayed in main window in the form of tabs. This is my use case.
    I tried the suggested profiler Redgate Ants profiler. Its very good and informative! I ran the profiler
    got the following output. Though I closed the child window it seems objects are still there in memory . No where I left out string , byte array objects in my code.
    Not sure why Runtimemethodinfo , hastable bucket are there in memory. I even tried the workaround mentioned at here.
    I thought panel resources might have not been freed up and in my code I am clearing them as well. Still did not see much improvement. Any additional things do I need to check? Please let me know.
    Thanks,
    Brahmaji.

  • Potential Memory Leak during Marshelling of a Web Service Response

    I believe I have found a memory leak when using the configuration below.
    The memory leak occurs when calling a web service. When the web service function is marshelling the response of the function call, an "500 Internal Server Error ... java.lang.OutOfMemoryError" is returned from OC4J. This error may be seen via the TCP Packet Monitor in JDeveloper.
    Unfortunately no exception dump is outputted to the OC4J log.
    Configuration:
    Windows 2000 with 1 gig ram
    JDeveloper 9.0.5.2 with JAX/RPC extension installed
    OC4J 10.0.3
    Sun JVM version 1.4.2_03-b02
    To demonstrate the error I created a simple web service and client. See below the client and web service function that demonstrates it.
    The web service is made up of a single function called "queryTestOutput".
    It returns an object of class "TestOutputQueryResult" which contains an int and an array.
    The function call accepts a one int input parameter which is used to vary the size of array in the returned object.
    For small int (less than 100). Web service function returns successfully.
    For larger int and depending on the size of memory configuration when OC4J is launched,
    the OutOfMemoryError is returned.
    The package "ws_issue.service" contains the web service.
    I used the Generate JAX-RPC proxy to build the client (found in package "ws_issue.client"). Package "types" was
    also created by Generate JAX-RPC proxy.
    To test the web service call execute the class runClient. Vary the int "atestValue" until error is returned.
    I have tried this with all three encodings: RPC/Encoded, RPC/Literal, Document/Literal. They have the
    same issue.
    The OutOfMemory Error is raised fairly consistently using the java settings -Xms386m -Xmx386m for OC4J when 750 is specified for the input parameter.
    I also noticed that when 600 is specified, the client seems to hang. According to the TCP Packet Monitor,
    the response is returned. But, the client seems unable to unmarshal the message.
    ** file runClient.java
    // -- this client is using Document/Literal
    package ws_issue.client;
    public class runClient
    public runClient()
    * @param args
    * Test out the web service
    * Play with the atestValue variable to until exception
    public static void main(String[] args)
    //runClient runClient = new runClient();
    long startTime;
    int atestValue = 1;
    atestValue = 2;
    //atestValue = 105; // last one to work with default memory settings in oc4j
    //atestValue = 106; // out of memory error as seen in TCP Packet Monitor
    // fails with default memory settings in oc4j
    //atestValue = 600; // hangs client (TCP Packet Monitor shows response)
    // when oc4j memory sessions are -Xms386m -Xmx386m
    atestValue = 750; // out of memory error as seen in TCP Packet Monitor
    // when oc4j memory sessions are -Xms386m -Xmx386m
    try
    startTime = System.currentTimeMillis();
    Ws_issueInterface ws = (Ws_issueInterface) (new Ws_issue_Impl().getWs_issueInterfacePort());
    System.out.println("Time to obtain port: " + (System.currentTimeMillis() - startTime) );
    // call the web service function
    startTime = System.currentTimeMillis();
    types.QueryTestOutputResponse qr = ws.queryTestOutput(new types.QueryTestOutput(atestValue));
    System.out.println("Time to call queryTestOutput: " + (System.currentTimeMillis() - startTime) );
    startTime = System.currentTimeMillis();
    types.TestOutputQueryResult r = qr.getResult();
    System.out.println("Time to call getresult: " + (System.currentTimeMillis() - startTime) );
    System.out.println("records returned: " + r.getRecordsReturned());
    for (int i = 0; i<atestValue; i++)
    types.TestOutput t = r.getTestOutputResults();
    System.out.println(t.getTestGroup() + ", " + t.getUnitNumber());
    catch (Exception e)
    e.printStackTrace();
    ** file wsmain.java
    package ws_issue.service;
    import java.rmi.RemoteException;
    import javax.xml.rpc.ServiceException;
    import javax.xml.rpc.server.ServiceLifecycle;
    public class wsmain implements ServiceLifecycle, ws_issueInterface
    public wsmain()
    public void init (Object p0) throws ServiceException
    public void destroy ()
    System.out.println("inside ws destroy");
    * create an element of the array with some hardcoded values
    private TestOutput createTestOutput(int cnt)
    TestOutput t = new TestOutput();
    t.setComments("here are some comments");
    t.setConfigRevisionNo("1");
    t.setItemNumber("123123123");
    t.setItemRevision("arev" + cnt);
    t.setTestGroup(cnt);
    t.setTestedItemNumber("123123123");
    t.setTestedItemRevision("arev" + cnt);
    t.setTestResult("testResult");
    t.setSoftwareVersion("version");
    t.setTestConditions("conditions");
    t.setStageName("world's a stage");
    t.setTestMode("Test");
    t.setTestName("test name");
    t.setUnitNumber("UnitNumber"+cnt);
    return t;
    * Web service function that is called
    * Create recCnt number of "records" to be returned
    public TestOutputQueryResult queryTestOutput (int recCnt) throws java.rmi.RemoteException
    System.out.println("Inside web service function queryTestOutput");
    TestOutputQueryResult r = new TestOutputQueryResult();
    TestOutput TOArray[] = new TestOutput[recCnt];
    for (int i = 0; i< recCnt; i++)
    TOArray[i] = createTestOutput(i);
    r.setRecordsReturned(recCnt);
    r.setTestOutputResults(TOArray);
    System.out.println("End of web service function call");
    return r;
    * @param args
    public static void main(String[] args)
    wsmain wsmain = new wsmain();
    int aval = 5;
    try
    TestOutputQueryResult r = wsmain.queryTestOutput(aval);
    for (int i = 0; i<aval; i++)
    TestOutput t = r.getTestOutputResults()[i];
    System.out.println(t.getTestGroup() + ", " + t.getUnitNumber());
    catch (Exception e)
    e.printStackTrace();
    ** file ws_issueInterface.java
    package ws_issue.service;
    import java.rmi.Remote;
    import java.rmi.RemoteException;
    public interface ws_issueInterface extends java.rmi.Remote
    public TestOutputQueryResult queryTestOutput (int recCnt) throws java.rmi.RemoteException;
    ** file TestOutputQueryResult.java
    package ws_issue.service;
    public class TestOutputQueryResult
    private long recordsReturned;
    private TestOutput[] testOutputResults;
    public TestOutputQueryResult()
    public long getRecordsReturned()
    return recordsReturned;
    public void setRecordsReturned(long recordsReturned)
    this.recordsReturned = recordsReturned;
    public TestOutput[] getTestOutputResults()
    return testOutputResults;
    public void setTestOutputResults(TestOutput[] testOutputResults)
    this.testOutputResults = testOutputResults;
    ** file TestOutput.java
    package ws_issue.service;
    public class TestOutput
    private String itemNumber;
    private String itemRevision;
    private String configRevisionNo;
    private String testName;
    private String testConditions;
    private String stageName;
    private String testedItemNumber;
    private String testedItemRevision;
    private String unitNumber;
    private String testStation;
    private String testResult;
    private String softwareVersion;
    private String operatorID;
    private String testDate; // to be datetime
    private String comments;
    private int testGroup;
    private String testMode;
    public TestOutput()
    public String getComments()
    return comments;
    public void setComments(String comments)
    this.comments = comments;
    public String getConfigRevisionNo()
    return configRevisionNo;
    public void setConfigRevisionNo(String configRevisionNo)
    this.configRevisionNo = configRevisionNo;
    public String getItemNumber()
    return itemNumber;
    public void setItemNumber(String itemNumber)
    this.itemNumber = itemNumber;
    public String getItemRevision()
    return itemRevision;
    public void setItemRevision(String itemRevision)
    this.itemRevision = itemRevision;
    public String getOperatorID()
    return operatorID;
    public void setOperatorID(String operatorID)
    this.operatorID = operatorID;
    public String getSoftwareVersion()
    return softwareVersion;
    public void setSoftwareVersion(String softwareVersion)
    this.softwareVersion = softwareVersion;
    public String getStageName()
    return stageName;
    public void setStageName(String stageName)
    this.stageName = stageName;
    public String getTestConditions()
    return testConditions;
    public void setTestConditions(String testConditions)
    this.testConditions = testConditions;
    public String getTestDate()
    return testDate;
    public void setTestDate(String testDate)
    this.testDate = testDate;
    public String getTestName()
    return testName;
    public void setTestName(String testName)
    this.testName = testName;
    public String getTestResult()
    return testResult;
    public void setTestResult(String testResult)
    this.testResult = testResult;
    public String getTestStation()
    return testStation;
    public void setTestStation(String testStation)
    this.testStation = testStation;
    public String getTestedItemNumber()
    return testedItemNumber;
    public void setTestedItemNumber(String testedItemNumber)
    this.testedItemNumber = testedItemNumber;
    public String getTestedItemRevision()
    return testedItemRevision;
    public void setTestedItemRevision(String testedItemRevision)
    this.testedItemRevision = testedItemRevision;
    public String getUnitNumber()
    return unitNumber;
    public void setUnitNumber(String unitNumber)
    this.unitNumber = unitNumber;
    public int getTestGroup()
    return testGroup;
    public void setTestGroup(int testGroup)
    this.testGroup = testGroup;
    public String getTestMode()
    return testMode;
    public void setTestMode(String testMode)
    this.testMode = testMode;

    I use web services a lot and I sympathize with your issue. I
    struggle with similar issues and I found this great utility that
    will help you confirm if your webservice is returning the data
    correctly to Flex. I know you said it works in other applications
    but who knows if flex is calling it correctly etc. This utility is
    been the most amazing tool in helping me resolve web service
    issues.
    http://www.charlesproxy.com/
    Once you can confirm the data being returned is good you can
    try several things in flex. Try changing your result format to
    object or e4x etc. See how that plays out. Not sure where your
    tapping in to look at your debugger, you might want to catch it
    right at the result handler before converting to any collections. .
    If nothing here helps maybe post some code to look at. .
    .

  • Memory Leak During Spatial Query

    Platform:
    Oracle 8.1.7 EE with Spatial
    Windows NT 4.0
    I'm seeing a memory leak that I have determined has something to do with spatial. Here is the PL/SQL code that generates the leak:
    DECLARE
    v_id NUMBER(16);
    v_longitude NUMBER(15,10);
    v_latitude NUMBER(15,10);
    v_wirecenter_name VARCHAR2(11);
    CURSOR c_Source IS
    SELECT id, longitude, latitude
    FROM prospects_geocode_info;
    CURSOR c_WC IS
    SELECT wc.wirecenter_name
    FROM ion_info.ion_wirecenters wc
    WHERE mdsys.sdo_relate(wc.geoloc,
    mdsys.sdo_geometry(2001,
    8265,
    mdsys.sdo_point_type(v_longitude,
    v_latitude,
    NULL),
    NULL,
    NULL),
    'mask=contains querytype=window') = 'TRUE';
    BEGIN
    open c_Source;
    loop
    fetch c_Source into v_id, v_longitude, v_latitude;
    exit when c_Source%NOTFOUND;
    if v_longitude is not NULL and v_latitude is not NULL THEN
    open c_WC;
    loop
    fetch c_WC into v_wirecenter_name;
    exit when c_WC%NOTFOUND;
    end loop;
    close c_WC;
    end if;
    end loop;
    close c_Source;
    END;
    I'm attributing the link to spatial because if I change the c_WC cursor's SELECT statement to not use a spatial query, I get no leak. As near as I can tell I'm leaking a little bit of memory with each spatial query. I can watch the consumed memory jump in 64K blocks about every second or two on the machine I am running on.
    I have tried pinning the code in memory, as well as pinning the spatial index and it's table in memory. None of this helps. I am continuing to experiment with this, but wanted to see if anyone had any ideas.
    Thanks.
    Matt.

    I have been able to reproduce the memory leak now using a very simple anonymous PL/SQL block. All it is doing is looping through a range of lon/lat and issuing a given spatial query. Here it is:
    DECLARE
    v_longitude NUMBER(15,10) := 0;
    v_latitude NUMBER(15,10) := 0;
    v_miprinx NUMBER;
    v_lon_start NUMBER(15,10) := -150.0000000000;
    v_lon_end NUMBER(15,10) := -30.0000000000;
    v_lat_start NUMBER(15,10) := 20.0000000000;
    v_lat_end NUMBER(15,10) := 70.0000000000;
    CURSOR c_test IS
    SELECT mi_prinx
    FROM ion_info.ion_markets
    WHERE mdsys.sdo_relate(geoloc,
    mdsys.sdo_geometry(2001,
    8265,
    mdsys.sdo_point_type(v_longitude,
    v_latitude,
    NULL),
    NULL,
    NULL),
    'mask=contains querytype=window') = 'TRUE';
    BEGIN
    FOR v_longitude IN v_lon_start..v_lon_end LOOP
    FOR v_latitude IN v_lat_start .. v_lat_end LOOP
    OPEN c_test;
    LOOP
    FETCH c_test
    INTO v_miprinx;
    EXIT WHEN c_test%NOTFOUND;
    END LOOP;
    CLOSE c_test;
    END LOOP;
    END LOOP;
    END;
    On my 8.1.7 database on NT 4.0 I get the same results on all three tables that have spatial indexes. I tried this on a different spatial table on 8.1.6 on NT 4.0 and saw no memory leak. It doesn't matter whether I execute the script using sqlplus or sqlplusw.
    Matt.

  • Memory Leak during EAR stop/update/start

    Hi all,
    Excuse me if I'm putting this question in the wrong forum - not sure if it should be here or "EJB". That being said - I am working on a project which is using Weblogic 11g and we have a set of EARs with EJBs deployed out. In one EJB we have a static variable which holds onto an object which is rather large (~2 Gigs).
    What I've noticed is that if I stop the EAR containing that EJB, update and restart it without restarting the server it's running on, the memory of that object does not seem to get GC'd. So basically, every time we make changes to that EAR and want to deploy we end up eating up a lot of memory.
    Our current way to fix this is to add a @pre-destroy method which basically does a "largeObject = null". This seems to allow it to be marked and collected by the Garbage Collector. However, I don't think this is the best solution for all static objects (what happens if we have an a bunch of EJBs in the pool and the AppContainer destroys one - all static references will get removed right?).
    Is there a reason that the AppContainer is holding on to those static references? Or am I missing something?
    Thanks,
    -Ritter

    An object referenced by a static member variable is strongly referenced until the class is unloaded. A normal classloader
    never unloads a class, but on an application server, such as WebLogic, this sometimes happens under the right conditions.
    A class in Java can be garbage-collected when nothing references it. In most simple setups this never happens, but there are situations where it can occur.
    There are many ways to make a class reachable and thus prevent it from being eligible for GC:
    - objects of that class are still reachable.
    - the Class object representing the class is still reachable
    - the ClassLoader that loaded the class is still reachable
    - other classes loaded by the ClassLoader are still reachable
    When none of those are true, then the ClassLoader together with all classes it loaded are eligible for GC.
    The best way to proceed is not to use global variables (which is asking for tricky memory leaks), especially ones that are 2G.

  • HTTPService + XML Load + Memory Leak

    Hi all....
    I have noticed a memory leak in my application. This leak was
    not apparent when the application was completed some months back
    which is what left me a little confused as all I have done since
    was upgrade to Flex 3 and possibly updated / changed my Flash
    player.
    I think I have found the cause to this problem (below) but am
    not 100% sure that it is the "actual" problem or any reasons to
    back my thoughts up, so have listed what I have checked / tried
    along the way (maybe I have missed something)....
    My Discovery Process:
    I started profiling my application but did not find anything
    out of the ordinary. I did a code walk-through double checking I
    had cleaned up after myself, removing and even nulling all items
    etc but still to now success - the leak is still there.
    I have profiled the app in the profiler for reasonably long
    periods of time.
    All the classes etc being used within the app are consistent
    in size and instance amount and there is no sign of any apparent
    leak.
    I am using a HTTPService that is loading XML data which I am
    refreshing every 5 seconds. On this 5 second data refresh some
    class instances are incremented but are restored to the expected
    amount after a GC has occurred. The GC seems to take longer, the
    longer the app is running, therefore more and more instances are
    being added to the app, but when the GC eventually runs it "seems"
    to clear these instances to the expected amount.
    After scratching my head for a while I decided to make a copy
    of my application, rip everything out, and focus in my data load,
    where I found a problem!
    I have now just a HTTPService that loads an XML file every 5
    seconds, and this is all I currently have in the app (as I ripped
    the rest of the code out), e.g:
    Code:
    <mx:Application xmlns:mx="
    http://www.adobe.com/2006/mxml"
    ....... creationComplete="initApp()" >
    <mx:HTTPService
    id="httpServiceResults"
    url="
    http://myIP:myPort/myRoot/myXML.cfm"
    resultFormat="e4x"
    result="httpResultHandler(event)" />
    <script....... >
    private var timerPulse:Timer;
    private function initApp():void
    httpServiceResults.send();
    timerPulse = new Timer(5000, 0);
    private function httpResultHandler(event:ResultEvent):void
    timerPulse.start();
    timerPulse.addEventListener(TimerEvent.TIMER, timerRefresh);
    public function timerRefresh(eventObj:TimerEvent):void
    timerPulse.stop();
    timerPulse.removeEventListener(TimerEvent.TIMER,
    timerRefresh);
    timerPulse.reset();
    httpServiceResults.send();
    </script>
    </mx:Application>
    This is pretty much the code I am currently using and it
    leaks.
    I ran and monitored this in both the profiler and the
    activity / task manager, and after running the app for 1800 seconds
    (30 min) in the profiler, the memory size grew from 50mg to 165mg
    just sending the HTTPService.
    I tried loading the service in multiple ways including in AS
    rather than MXML creating new instances of it each time, resetting
    it, nulling it etc... but nothing prevented this memory increase.
    I then tried to load the XML using different methods such as
    using the URLRequest and URLLoader which again caused a memory
    leak.
    What still confuses me is that this leak did not exist in the
    previous version and not a great deal has changed since then apart
    from upgrading to Flex 3 and possibly upgrading my Flash payer
    (which I believe is a possible cause)
    After looking into this issue a bit more deeply, I read a few
    blogs / forums and other people are experiencing the same problems
    - even with a lot bigger leaks in some cases all when reloading
    large sets of XML data into Flex - however, I as of yet found no
    solution to this leak - people with a similar problem believe it is
    not due to a memory leak more a GC error, and others pointing
    towards the Flash Player itself that is leaking - I don't really
    know.
    Findings so far during investigation of this issue:
    * App leaks for both HTTPService and ULRRequest / URLLoader
    methods
    * App only leaks when calling a data loader
    * The size of the leak seems to depend on the size of the
    XML being loaded
    * The size of the leak also seems to be affected by the
    applications heaviness - the greater seems to enhance the leak
    An interesting factor I have noticed is that if I copy the
    XML from my "myXML.cfm" that I link to in my HTTPService and copy
    the contents of the file into my own XML file stored within the
    Flex project root itself: ""myXML.xml"" the leak disappears... like
    it seems to link when loading the XML over a network, however as my
    network knowledge is not great I am not sure what to make of this -
    any ideas???
    Could the connection to the XML document cause leaks??? is
    there anything else that could cause this leak??? have I something
    in my code sample that could cause this leak??? or could any of the
    other things I have mentioed cause this leak???
    Any help / ideas would be greatly appreciated.
    Thanks,
    Jon.

    I also observed heavy memory leak from using httpservice with
    XML data. I am using Flex3 builder under Linux. My Flex application
    polls httpservice every 10 seconds. The reply is a short XML
    message less than 100 bytes. This simple polling will consume 30+
    MB of memory every hour. I leave it idling for several hours and it
    took 200 MB of memory. No sign of garbage collection at all.

  • Memory leak in Application

    Hi,
    we're load testing an application using Coherence. It uses a distributed cache, with an web application as the client, and separate cache servers implementing a Cache Store.
    We're getting several memory leaks and one area that was reported was a great number of instances for the com.tangosol.coherence.component.util.daemon.queueProcessor.service.DistributedCache$GetRequest class.
    Does anybody know what could cause these instances to be left hanging around? I think the Coherence classes ar a symptom of another problem rather than an issue with Coherence itself but it would be useful to know what could cause these objects to be left in the heap.
    Thanks
    Mike

    After further load testing, our application definitely seems to be leaking Coherence objects.
    The classes seem to be com.tangosol.util.Binary &
    com.tangosol.coherence.component.util.daemon.queueProcessor.service.DistributedCache$GetRequest.
    During testing, the number of Binary objects rose 0 to about 9000 and the number of GetRequest objects rose from 0 to about 3600 in two hours.
    The application stores objects in the cache and updates them, the main operation being to add to a very long log string required by the client to these objects, which represent sessions.
    Our test keeps a constant number of these objects in the cache during the run, removing the same number it creates after it has ramped up to full load testing.
    The application is stateless, it recieves frequent requests to get an object from the cache, work on it and put it back in the cache. The cache also has a cache store to persist the data to a database.
    Are there any references to the cache objects that would stop them being garbage collected?
    Our whole application is based in a simple stateless reqest/response operation and I cannot see where the huge number of objects is coming from.
    Mike

  • Memory leak in tagsrv.exe

    I'm seeing a memory leak in tagsrv.exe on my laptop, where I use DSC
    v8.2.  When I close the screen (suspend the laptop), and then open
    it again (resume), the tagsrv.exe memory usage jumps dramatically,
    often to over 125MB.  What is more, it appears each time I do this
    the memory jumps again by this amount (I'm not completely sure how
    consistent the incremental increase is, but I've often seen over 250MB
    memory usage, and as high as 500MB).  Has anyone else encountered
    this, or does anyone have a solution?
    Thanks.
    David Moerman
    TruView Technology Integration Ltd.

    Attached are some images of memory usage.  Interesting, but the
    problem does NOT occur if I simply hibernate then resume over a short
    period of time.  The images you see are the result of hibernating
    OVERNIGHT.  Not sure what to make of that.  I did not have
    LabVIEW running when the memory jump occured.
    The LV DSC project I'm working on has about 40 shared variables, many
    of which are supposed to be connected to a Modbus/TCP client via
    OPC.  However, during this development period I do not have the
    hardware, so some shared variable errors result which I ignore. 
    Also, I'm using a dataset I/O server to create batch-oriented datasets.
    -Dave
    Attachments:
    memory1.GIF ‏49 KB
    memory2.GIF ‏49 KB

  • 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 Problem at Adobe LiveCycle Server 9.0

    Hi All,
    We want to upgrade our system to 9.0. During the performance test we have found memory Leak problem at ALS 9.0. I explain the detailed problematic issue below. Is there any body who has any suggest?
    We have Adobe Livecycle ES2 9.0 SP2 installed on WAS 6.1. But also WAS on Windows Server 2008 R2. We call java web services from .Net Web service for generating PDFs.
    On Java side “com/adobe/internal/pdftoolkit/services/javascript/GibsonMemoryTracking” class is causing Memory Leak problem at server.
    Our .Net Codes. I copied below. First we generate PDF then we convert this pdf to static pdf.
    First We call the GeneratePDF function.
    public static bool GeneratePdf(Document document, byte[] pdfTemplate)
            try
                //Create a FormDataIntegrationService object and set authentication values
                FormDataIntegrationService formDataIntegrationClient = new FormDataIntegrationService();
                formDataIntegrationClient.Credentials = new System.Net.NetworkCredential(Settings.ALCUserName, Settings.ALCPassword);
                //Import XDP XML data into an XFA PDF document
                ALCFormDataIntegrationService.BLOB inXMLData = new ALCFormDataIntegrationService.BLOB();
                //Populate the BLOB object
                inXMLData.binaryData = System.Text.Encoding.UTF8.GetBytes(document.XmlData);
                //Create a BLOB that represents the input PDF form
                ALCFormDataIntegrationService.BLOB inPDFForm = new ALCFormDataIntegrationService.BLOB();
                inPDFForm.binaryData = pdfTemplate;
                //Import data into the PDF form
                ALCFormDataIntegrationService.BLOB results = formDataIntegrationClient.importData(inPDFForm, inXMLData);
                document.PdfData = results.binaryData;
                Utility.Log("GeneratePdf", "Pdf generated successfully.", LogLevel.Info);
                return true;
            catch (Exception ex)
                document.ReturnCode = "22";
                document.ReturnMsg = "Exception on generating the pdf";
                Utility.Log("GeneratePdf", "Exception: " + ex.Message, LogLevel.Error);
                return false;
    Then We call the ConvertPDF function.
    public static bool ConvertPdf(Document document)
            try
                //Create a OutputServiceService object
                OutputServiceService outputClient = new OutputServiceService();
                outputClient.Credentials = new System.Net.NetworkCredential(Settings.ALCUserName, Settings.ALCPassword);
                //Create a BLOB object
                ALCOutputService.BLOB inData = new ALCOutputService.BLOB();
                //Populate the BLOB object
                inData.binaryData = document.PdfData;
                //Set rendering run-time options
                RenderOptionsSpec renderOptions = new RenderOptionsSpec();
                renderOptions.cacheEnabled = true;
                //Create a non-interactive PDF document
                ALCOutputService.BLOB results = outputClient.transformPDF(inData, TransformationFormat.PDF, PDFARevisionNumber.Revision_1, false, null, PDFAConformance.B, false);
                document.PdfData = results.binaryData;         
                Utility.Log("ConvertPdf", "Pdf converted successfully.", LogLevel.Info);
                return true;
            catch (Exception ex)
                document.ReturnCode = "22";
                document.ReturnMsg = "Exception on converting dynamic pdf to static pdf";
                Utility.Log("ConvertPdf", "Exception: " + ex.Message, LogLevel.Error);
                return false;
    Our System Configuration:
    Expiry date: Never Version: 9.0.0.0,
    GM Patch Version: SP2
    Service Pack Version: unknown
    ADOBE® LIVECYCLE® PDF Generator ES2
    9.0.0.0
    SP2
    ADOBE® LIVECYCLE® Reader Extensions ES2
    9.0.0.0
    SP2
    ADOBE® LIVECYCLE® Output ES2
    9.0.0.0
    SP2
    We changed some configuration which is suggested by Adobe. But this change does not solve our problem.
    Changed Configurations via ADMINUI
    Memory Leak Problem which is viewed via wily tool:

    Hi Mahir,
    Can you attach the results of this performance test where we can see how GibsonMemoryTracking class is causing the memory leak issue.
    Also do you see any stackTrace in the LiveCycle server logs related to memory / heap when you run this performance test ?
    Thanks,
    Simer

  • Memory leak in DIADEM 8.1

    Hello,
    I'm using DIADEM 8.1.1292 on a 3GHz WinXP ProSP2-PC with
    2Gytes of RAM.
    I'm doing some extensive data manipulation with DIADEM-VBScript and discovered (?) a memory leak which seriously disturbs my work:
    After finishing the script DIADEM doesn't free the used memory (RAM). I checked this behaviour using XP task manager. After starting DIADEM, it uses about 300MBytes . During my Script the memory consumption goes up to over 1Gbyte. After successfully finishing my script DIADEM doesn't free the Windows memory. Next time I run my script DIADEM stops with an error at about 1,5Gbyte memory consumption.
    If I restart DIADEM everything works fine until the memory is full again.
    Any hints? How can I tell DIAdem to free the memory?
    Than
    ks in advance
    Mathias

    Hi mstadler,
    My guess is that if you are talking about the DIAdem thread using over a Gigabyte of memory, your VBScript must be creating new DATA channels. If that's the case, then let me ask: when you re-run your VBScript, does it first delete the new channels it created the first time? Would you be willing to send over the VBScript you are running for us to take a look at it? You may well have discovered a memory leak, but based on your description my suspicion is that we can avoid this behavior by changing the details of the VBScript and perhaps other memory management properties. Does your VBScript load data from a file? Could it perhaps register that data instead (File>>Register file...)? Your operating system will only give DIAdem (or any other W
    indows application) up to but not exceeding 2 GBytes of virtual memory. DIAdem has the ability to manage its own virtual memory far in excess of this limit, but in DIAdem 8.1 this still has to be manually preconfigured. In DIAdem 9.1 the DIAdem-managed virtually memory automatically kicks in when needed and configures itself.
    Please send over your VBScript if that's feasible,
    Brad Turpin
    DIAdem Product Support Engineer
    National Instruments

  • 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 4.5.1/Java/Solaris

    Hi,
    We are currently running a Java Application using RMI/Weblogic 4.5.1/Solaris 5.7/Java 1.22.
    Behavior that has been observered during the day is that memory usage reaches a stage in which it begins increasing and GC doesn't recover any memory, until the heap reaches an extremly large size, then recovers a significant amount of memory.
    We have even seen the java process grab more memory than specified in the -Xmx parameter and experience a java.lang.OutOfMemory error.
    I have seen postings that describe similar issues in this newsgroup, but none that define a solution.
    This problem is intermittent, and our application can run an entire day without experiencing this memory leak. On the other hand there are days when the memory leak occurrs even when the system is idle overnight.
    Please let me know any information you have gathered on this subject.
    Regards,
    Mark Evans

    try increasing your virtual memory on your NT system...
    "Parasher K. Joshi" <[email protected]> wrote:
    >
    Hi,
    I observed the same confusing stuff in my tests. But I run weblogic 4.5.1 on Windows NT with JDK 1.2.2-w
    Usually, I would get a "Low virtual memory" message from windows
    and if I click ok & shuffle thourgh my windows I would be ok.
    But since last 2 days, I would keep the server running overnight.
    When I return in morning,
    I would find a "Low virtual memory" message and
    on clicking OK. I would find another message tell me that java.exe (which was running weblogic) crashed!!
    Now today I tried to watch the memory usage in Task Manager. And I found the most wierd thing.
    I saw that even when the system was doing virtually nothing,
    except print a string at intervals, the memory usage would go
    up steadyly.
    Even doing a forced finalization and gc did not seem to stop it.
    BUT, BY CHANCE I HAPPEN TO MINIMISE AND MAXIMISE THE WEBLOGIC
    CONSOLE OUTPUT WINDOW.
    WHAT I SAW IN THE TASK MANAGER AMAZED ME!
    THE MEMORY USAGE IN TASK MANAGER HAD GONE DOWN TO 24XXKB, WHILE
    IT WAS ABOUT 20000K OR EVEN MORE.
    This seems to support the fact that during my test, I would
    get the "low virtual memory" message and if OKed it and shuffled
    though application windows (maybe minimise, maximise the weblogic
    console output window in process), I would be able to complete
    my application. But when the message appears during night runs,
    nothing is done and by morning, when I reach to work,
    I would see that weblogic had crashed!!
    You may try that and see if it helps you.
    Parasher
    Mark Evans <[email protected]> wrote:
    Hi,
    We are currently running a Java Application using RMI/Weblogic 4.5.1/Solaris 5.7/Java 1.22.
    Behavior that has been observered during the day is that memory usage reaches a stage in which it begins increasing and GC doesn't recover any memory, until the heap reaches an extremly large size, then recovers a significant amount of memory.
    We have even seen the java process grab more memory than specified in the -Xmx parameter and experience a java.lang.OutOfMemory error.
    I have seen postings that describe similar issues in this newsgroup, but none that define a solution.
    This problem is intermittent, and our application can run an entire day without experiencing this memory leak. On the other hand there are days when the memory leak occurrs even when the system is idle overnight.
    Please let me know any information you have gathered on this subject.
    Regards,
    Mark Evans

Maybe you are looking for

  • How to get the html for a button created in Muse

    I am trying to create buttons in Muse, and then share the html snippet for those buttons with a developer.  How do I do this?

  • Digital Copy of Bluray won't show up in iTunes

    I got the bluray trilogy of Jurassic Park for christmas, and each of the movies came with a digital copy i could download on itunes. So i did as the instructions told me to do, went online, entered the code, it opened up itunes for me, and let me dow

  • Report painter report with two header rows

    Experts, I have managed the variable values in report painter but in display output i am unable to recognize the value displayed for march / April is actual or planned Please find attached screen shot for the same... Is there any way to have both the

  • DJ 3545 copying resolution issue

    Hi there I am having a problem with my DJ 3545 when I use the copy function. The printout has vertical lines missing in a number of locations on the document. I have tried copying different documents just to make sure that it's not a bad quality docu

  • Error Parsing: WebIOException

    Hi all!!! I am having some problems when I deployed my EAR in AS. The application launch the error bellow when I try to get acess in the page that are not linking with the rol. com.sap.engine.services.servlets_jsp.server.exceptions.WebIOException: