IFS ALERT NOTICE FOR JDBC MEMORY LEAK FIX

IFS ALERT NOTICE FOR JDBC MEMORY LEAK FIX
Product and Version Affected:
Product: Oracle Internet File System
Product ID: 7
Version: 1.0
Description: There is a memory leak when retrieving or saving BLOBs through JDBC. IFS will appear to continue to increase in its memory consumption until the user runs out of swap space, and the machine stops functioning.
Platform Affected: Sun SPARC Solaris, Windows NT
Likelihood of Occurrence: Most iFS customers will notice this problem, since most will retrieve and store enough document content that they will notice the memory leak.
Symptoms:
- Performance becomes unacceptable on a minimally configured machine when doing significant retrievals and storage of documents.
- Significant swapping of the operating system.
- The user sees real memory and total memory continue to increase without bound when using any iFS protocols to retrieve and store document content.
- The memory usage goes back to normal when the iFS protocols are stopped.
Solution: Get the JDBC 8.1.6.0.1 patch for Solaris or NT (the OCI component, for JDK 1.1). Install it on all machines where the iFS protocols are running. The patch may be obtained on http://technet.oracle.com/software/tech/java/sqlj_jdbc/software_index.htm (you have to be logged into technet).
Be sure to get the OCI component of JDBC 8.1.6.0.1 for JDK 1.1.
null

Moving to Top

Similar Messages

  • Effective tool for GDI memory leaks detection

    Hello!
    Would you advice me some effective tool for GDI memory leaks and run-time errors detection in VC++?
    Thanks!

    926007 wrote:
    This forum is about Java.No, this forum is about C++.
    Please notice the name of the forum: "Solaris Studio *C++*", under the category "Application Development in C, C++, and Fortran".
    There are other forums for Java, listed here:
    https://forums.oracle.com/forums/category.jspa?categoryID=285

  • JDBC memory leak in 11.2.0.2.0 driver ?

    Hi,
    my customer on WLS 9.2.1 have just upgraded to new database and to a new JDBC Oracle 11.2.0.2.0 driver and it seems there is a memory leak. Based on heap dump it seem that leek i near oracle.jdbc.xa.OracleXAResource$XidListEntry. Admins are missing about 200MB on each server after 3 days.
    Class Name | Objects | Shallow Heap | Retained Heap
    oracle.jdbc.xa.OracleXAResource$XidListEntry| 2,378,575 | 57,085,800 | 171,257,016
    Class Name | Objects | Shallow Heap | Retained Heap
    weblogic.transaction.internal.XidImpl| 2,378,605 | 57,086,520 | 114,172,880
    2,378,605 objects are really a lot :) and it about 114 MB of weblogic.transaction.internal.XidImpl objects
    I found patch 8423655 but it is for older driver version. Does anybody have a similar experience? Any solution?
    Thanks
    Patrik

    After a discussion with support we have found patch for the problem:
         Document Titleoracle.jdbc.xa.OracleXAResource$XidListEntry Objects Leaking in JDBC Driver for WebLogic Server (WLS) (Doc ID 872258.1)
    You were right the problem was on Weblogic site and also on driver side. In last JDBC driver it is already fixed so we have to upgrade just WLS part.
    Thanks
    Patrik

  • Best Practices for EJB--memory leak avoidance

    I an researching a memory leak. From what I can tell, we do not want to put any instance variables at the class level. This would incur a memory leak when the ejb containers creates the ejb.
    I am wondering if there are any more 'best practices' with EJBs that prevent memory leaks. A good site would help me too
    Russ

    Thank for your reply.
    You are right. I was referring to stateless session
    beans.
    What I was thinking was the following:
    1. Making parameters final unless the parameter
    r state is changed inside a method.Won't help with memory leaks. There are benefits for an object being immutable, but I don't think that it eliminates the possibility of the object being leaked.
    2. All instance variables in stateless session beans
    s should be set to null upon ejbPassivate and
    ejbRemove operations. The variables should be
    populated on ejbCreate and ejbActivate.Optimizing compilers don't need the hint of setting the reference to null. I don't think that helps, but I'm not 100% certain.
    3. Before throwing an exception at the session bean
    level, clear up all the instance variables by setting
    them to null.Shouldn't scope make it clear to the GC that the objects aren't needed? If they're all primitives, how does this help memory leaks?
    I am using a profiler to identify the objects still
    being held onto once GC, but I was hoping others with
    more experience than I would share some of their tips
    on how they avoid memory leaks.I don't know where you're getting these tips, but I don't think they're helpful.
    Collections and Singletons would be the places where I'd look. If you add a reference to an object that holds onto it in a collection and never lets go, the GC won't reclaim it.
    Singletons aren't cleaned up, because their instance is static. Anything the Singleton refers to won't be cleaned up unless the Singleton relinquishes the reference.
    Look for things like that. I think they matter more.
    %

  • Oracle/JDBC Memory Leak

    I am using the Oracle 7 client with the JDBC driver for Java 2. I am also using the Sun jdk 1.3 SE. Every time I establish a connection to any Oracle database, there is a bit of memory that is lost and can not be reclaimed. A simple program that connects to the database via DriverManager.getConnection(), followed by Connection.close() inside a loop shows the memory gradually increasing. Is this a bug? If so, where is the patch?

    the first jdbc drivers certified to work with java 2 (aka jdk 1.2) were called
    "jdbc 8.1.6sdk". They have been replaced by jdbc816 and jdbc 817 plus their related patchsets.
    the version 7 jdbc drivers went out of support on dec 31, 2000 along with the rdbms 7.3.x product suite.
    patches are not generated for "out of support" products.
    jdk 1.3 is not certified with any oracle jdbc drivers yet, however, some people have been able to use it with the 816 or 817 jdbc drivers with minimal problems.
    be advised...
    any problems you run into with oracle jdbc drivers while using jdk 1.3 must be reproduced with jdk 1.2.x in order for a bug to be filed.
    i hope this helps ...
    null

  • AVConversionConvertFromPDFWithHandler for jpeg memory leak?

    Hi,
    I'm trying to utilize this AVConversionConvertFromPDFWithHandler call in my plugin to convert single page PDF into JPEG file. I've added available memory trace before and after this call and I have this data (in bytes here):
    2010.10.12 23:24:07:515 pid: 5612, tid: 7080: Memory before AVConversionConvertFromPDFWithHandler: 1038352384
    2010.10.12 23:24:12:546 pid: 5612, tid: 7080: Memory after AVConversionConvertFromPDFWithHandler: 1028227072
    So, you could see that AVConversionConvertFromPDFWithHandler ate about 10 MB of memory.
    My test PDF is 22 KB in size and generated JPEG is 387 KB. Why do we have such huge memory consumption? Do I need to call some special cleanup after that call is done?
    The version of Adobe ImageConversion.api plugin, which is involved in that conversion is 9.3.3.177. I'm running that on Windows XP.

    Memory grows each time with that call. Look at this:
    2010.10.13 00:13:51:109 pid: 6352, tid: 6596: Memory before AVConversionConvertFromPDFWithHandler: 1035579392
    2010.10.13 00:13:56:468 pid: 6352, tid: 6596: Memory after AVConversionConvertFromPDFWithHandler: 1025404928
    2010.10.13 00:14:45:968 pid: 6352, tid: 6596: Memory before AVConversionConvertFromPDFWithHandler: 990334976
    2010.10.13 00:14:51:515 pid: 6352, tid: 6596: Memory after AVConversionConvertFromPDFWithHandler: 988655616
    2010.10.13 00:15:45:374 pid: 6352, tid: 6596: Memory before AVConversionConvertFromPDFWithHandler: 966565888
    2010.10.13 00:15:49:812 pid: 6352, tid: 6596: Memory after AVConversionConvertFromPDFWithHandler: 964751360
    2010.10.13 00:16:48:421 pid: 6352, tid: 6596: Memory before AVConversionConvertFromPDFWithHandler: 941375488
    2010.10.13 00:16:53:062 pid: 6352, tid: 6596: Memory after AVConversionConvertFromPDFWithHandler: 939618304
    Well, while it doesn't grow each time by 10 MB as with initial call, it still grows by about 2 MB on each call after that.
    So, if called in that way for let say 101 PDFs - then I'll loose about 210 MB of memory and if I want to process even more files without Acrobat restart - probably it will crash at some point.

  • CS3: Leaks.txt - How can I find the reason for the memory leaks?

    Hi<br /><br />I get the following messages in Leaks.txt, created from the memory tracker (Windows):<br /><br />------------------------------------------------------------------------<br /><br />Leaks!  13 leaks, 845468 bytes<br /><br />65036 bytes at: 5B42FE0<br />     4172627C     MemoryPool::GetNonPoolSizePeak cannot be found in any module!<br />     44D8D23B     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     0039C74F     cannot find address in any module!<br />     00396DEC     BIBGetVersion cannot be found in any module!<br />     00396E60     BIBGetVersion cannot be found in any module!<br />     003979E4     cannot find address in any module!<br />     451D3A61     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     451D3A14     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8CCEE     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D02E     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D5C8     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     1002C26E     cannot find address in any module!<br />     1002BFB9     cannot find address in any module!<br />     00401644     cannot find address in any module!<br />     00405146     cannot find address in any module!<br />     00404EBD     cannot find address in any module!<br />     7C816FD7     RegisterWaitForInputIdle cannot be found in any module!<br />65036 bytes at: 5B52E30<br />     4172627C     MemoryPool::GetNonPoolSizePeak cannot be found in any module!<br />     44D8D23B     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     0039C74F     cannot find address in any module!<br />     00396DEC     BIBGetVersion cannot be found in any module!<br />     4FEC149B     cannot find address in any module!<br />     4FEC4C63     cannot find address in any module!<br />     44D8CD53     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D02E     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D5C8     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     1002C26E     cannot find address in any module!<br />     1002BFB9     cannot find address in any module!<br />     00401644     cannot find address in any module!<br />     00405146     cannot find address in any module!<br />     00404EBD     cannot find address in any module!<br />     7C816FD7     RegisterWaitForInputIdle cannot be found in any module!<br />65036 bytes at: 5B72D20<br />     4172627C     MemoryPool::GetNonPoolSizePeak cannot be found in any module!<br />     44D8D23B     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     0039C74F     cannot find address in any module!<br />     00396DEC     BIBGetVersion cannot be found in any module!<br />     4E1D1A7A     cannot find address in any module!<br />     4E212081     cannot find address in any module!<br />     44D8CD8D     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D02E     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D5C8     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     1002C26E     cannot find address in any module!<br />     1002BFB9     cannot find address in any module!<br />     00401644     cannot find address in any module!<br />     00405146     cannot find address in any module!<br />     00404EBD     cannot find address in any module!<br />     7C816FD7     RegisterWaitForInputIdle cannot be found in any module!<br />65036 bytes at: 5CD1478<br />     4172627C     MemoryPool::GetNonPoolSizePeak cannot be found in any module!<br />     44D8D23B     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase ca

    Hi<br /><br />I get the following messages in Leaks.txt, created from the memory tracker (Windows):<br /><br />------------------------------------------------------------------------<br /><br />Leaks!  13 leaks, 845468 bytes<br /><br />65036 bytes at: 5B42FE0<br />     4172627C     MemoryPool::GetNonPoolSizePeak cannot be found in any module!<br />     44D8D23B     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     0039C74F     cannot find address in any module!<br />     00396DEC     BIBGetVersion cannot be found in any module!<br />     00396E60     BIBGetVersion cannot be found in any module!<br />     003979E4     cannot find address in any module!<br />     451D3A61     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     451D3A14     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8CCEE     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D02E     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D5C8     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     1002C26E     cannot find address in any module!<br />     1002BFB9     cannot find address in any module!<br />     00401644     cannot find address in any module!<br />     00405146     cannot find address in any module!<br />     00404EBD     cannot find address in any module!<br />     7C816FD7     RegisterWaitForInputIdle cannot be found in any module!<br />65036 bytes at: 5B52E30<br />     4172627C     MemoryPool::GetNonPoolSizePeak cannot be found in any module!<br />     44D8D23B     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     0039C74F     cannot find address in any module!<br />     00396DEC     BIBGetVersion cannot be found in any module!<br />     4FEC149B     cannot find address in any module!<br />     4FEC4C63     cannot find address in any module!<br />     44D8CD53     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D02E     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D5C8     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     1002C26E     cannot find address in any module!<br />     1002BFB9     cannot find address in any module!<br />     00401644     cannot find address in any module!<br />     00405146     cannot find address in any module!<br />     00404EBD     cannot find address in any module!<br />     7C816FD7     RegisterWaitForInputIdle cannot be found in any module!<br />65036 bytes at: 5B72D20<br />     4172627C     MemoryPool::GetNonPoolSizePeak cannot be found in any module!<br />     44D8D23B     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     0039C74F     cannot find address in any module!<br />     00396DEC     BIBGetVersion cannot be found in any module!<br />     4E1D1A7A     cannot find address in any module!<br />     4E212081     cannot find address in any module!<br />     44D8CD8D     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D02E     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     44D8D5C8     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase cannot be found in any module!<br />     1002C26E     cannot find address in any module!<br />     1002BFB9     cannot find address in any module!<br />     00401644     cannot find address in any module!<br />     00405146     cannot find address in any module!<br />     00404EBD     cannot find address in any module!<br />     7C816FD7     RegisterWaitForInputIdle cannot be found in any module!<br />65036 bytes at: 5CD1478<br />     4172627C     MemoryPool::GetNonPoolSizePeak cannot be found in any module!<br />     44D8D23B     K2Internals::K2VectorBase<Schemas::SchemaInfo,K2Allocator<Schemas::Sc hemaInfo> >::erase ca

  • Memory Leak when just launched and Idle..  fixes when being used ??  [HELP]

    So I'm in the debugging and testing phase of my app and using this tool for tracking memory leaks ( https://github.com/mrdoob/Hi-ReS-Stats )
    When I launch my app my numbers are
    FPS: 61/60
    MS: 17
    MEM: 3.157
    MAX: 3.157
    Now immediately my memory starts increasing    from  3.157, 3.167, 3.177, 3.187, 3.197 and so on.
    Now if I make any nav selection in my app
    MEM changes back down to about 3.215
    but then it starts its count again   3.215, 3.225,  3.235, 3.445, 3.455
    I don't have any loops happening.
    Has anyone run in to this ?
    I'm almost tempted to force garbage collection every 60 seconds that the app is idle or something.  Not the best way to handle this ..   I just dont know where the leak is happening.
    Any support is appreciated!
    Cheers!

    Hi there - I just had the same query a couple of days ago (http://forums.adobe.com/thread/977174?tstart=30).
    I saw the same symptoms on my app so I built a blank app with just the profiler on stage. I've been monitoring it for a few days now and notice that memory does creep up even when the app is left idle (apart from the profiler) - but ... and this is the important bit ... it does periodically get reduced back to the starting point (when the garbage collector kicks in and memory is released).
    When I was monitoring my app the time through this cycle could be well over 5 mins.
    If you actually use the monitor when putting your app through it's paces you'll see memory being gobbled up more rapidly and hopefully (if you've no leaks) the garbage collection kicking in more regularly and bringing the reported usage back down.

  • KeyboardFocusManager reason for memory leak?

    Hi all,
    with a memory leak detector we found that our application has massive memory leaks after opening and closing a JDialog and the reason we found was the following:
    The KeyboardFocusManager has a private static HashMap in which the actual focus in each window is stored. This is done by storing key/value-pairs in the HashMap with window as a key and the Component having the focus on this window as the value. Now you can throw the reference to the component away by using e.g. theComponent.setEnabled(false) - the KeyboardFocusManager then stores the pair window/null in the HashMap - but we didn't find any callable method to remove a key/value-pair from the HashMap and so the reference to the JDialog (as the key!!) stays resident and we have the reason for the memory leak. Now I have a few questions to this problem:
    1. Is it right in your opinion, that there is no method to delete the entry from this Hashtable?
    2. If this is the case - we have the opinion that there must be a good time to delete this entry (e.g. when disposing the dialog). Do you see if there is an obvious reason that this opinion is false?
    3. If no do you think this problem can be accepted as a bug by sun
    Thanks in advance and greetings from
    Holger

    I have been seeing similar behavior; I too have not found all the
    leaks. I think I have slowed the allocation by replacing some of my
    'build array' functions with the combination of 'initialize array'
    followed by 'replace array subset'. The drawback to doing it this way
    is that you have a fixed maximum number of elements allocated just once
    rather than allowing an array to grow incrementally. Please let me know
    if you try removing build arrays and if that helps.
    By the way, there is a checkbox under the options menu to deallocate
    memory as soon as possible - if you don't mind that your program runs
    more slowly, this may help to avoid the problem, at least temporarily.
    -vinny
    ciossek wrote:
    > dear all,
    > my labview program needs an increasing amount of memo
    ry when running
    > (at the time about 12k/s) which leads to swapping memory on my hdd.
    > i have found out that calling cluster references like Controls[] or
    > decos[] leads to this kind of memory leak and made a work around for
    > that (simply calling it only once at runtime) but there are more
    > memory leak(s)which i cannot find. The bugs that i have found
    > searching the labview resources does not answer my problem.
    >
    > does anybody already found out more memory leak problems ?
    >
    > thanks

  • Memory leak issues persist in Safari 6.0.5 (it's about time that Apple actually fixed this)

    Safari has been notorious for its memory leaks for years, as I'm sure many of you know. I stopped using Safari as my main browser in 2010 or so, and I instead began to use Chrome. However, I recently had to use Safari to access some webpages, and I neglected to quit out of it. A few hours later, my computer slowed to a complete crawl. I was confused, because my computer never slows down to such a crawl, so I went into Activity Monitor to find the 'Safari Web Content' process using all of my available RAM, which was nearly 6 GB. Needless to say, Safari was force quit after that. I've heard that some plugins will cause this, but Flash was my only active plugin. Flash is, indeed, a heaping pile of crap that will readily eat resources as it sees fit- but this never happens to me in Chrome, and I use Flash all of the time n Chrome. This was after it had been sitting idle for quite some time, and I imagine that it would have used more RAM if it could.

    Using 6.0.5 here without any of those issues ...
    Regardless of whether Flash is being used, from your Safari menu bar click Help > Installed Plug-ins.
    Try troubleshooting extensions and third party plug-ins.
    From your Safari menu bar click Safari > Preferences then select the Extensions tab. Turn that off if there are any installed. Quit and relaunch Safari to test. If that helped, turn extensions back on then uninstall one a time to test.
    If it's not an extensions issue, try troubleshooting third party plug-ins.
    Back to Safari > Preferences. This time select the Security tab. Deselect:  Allow all other plug-ins. Quit and relaunch Safari to test.
    If that made a difference, instructions for troubleshooting plugins here.
    my computer slowed to a complete crawl.
    Checked to see exactly how much space is available ??
    Click your Apple menu icon top left in your screen. From the drop down menu click About This Mac > More Info > Storage
    Make sure there's at least 15% free disk space.
    Checked the startup disk lately?
    Launch Disk Utility located in HD > Applications > Utilities
    Select the startup disk on the left then select the First Aid tab.
    Click:  Verify Disk  (not Verify Disk Permissions)
    If the disk needs repairing, restart your Mac while holding down the Command + R keys. From there you can access the built in utilities in OS X Recovery to repair the startup disk.
    message edited by:  cs

  • How to deal with Memory Leaks, that are caused by Binding

    Hi, I recently noticed (huge?) memory leaks in my application and suspect bindings to be the cause of all the evil.
    I made a little test case, which confirms my suspicion:
    import javafx.application.Application;
    import javafx.beans.property.SimpleStringProperty;
    import javafx.beans.property.StringProperty;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    public class TestAppMemoryLeak extends Application {
        public static void main(String[] args) {
            launch(args);
        @Override
        public void start(Stage stage) throws Exception {
            VBox root = new VBox();
            Button button = null;
            for (int i = 0; i < 100000; i++) {
                button = new Button();
                button.textProperty().bind(text);
                button.textProperty().unbind(); // if you don't call this, you can notice the increased memory of the java process.
            root.getChildren().add(button);
            Scene scene = new Scene(root);
            stage.setScene(scene);
            stage.show();
        private StringProperty text = new SimpleStringProperty("test");
    }Now the problem is, HOW can I know, when a variable is no longer needed or overwritten by a new instance.
    Just an example:
    I have a ListView with a Cell Factory. In the updateItem method, I add a ContextMenu. The textProperty of each MenuItem is bound to a kind of global property, like in the example above. I have to do it in the updateItem method, since the ContextMenu differs depending on the item.
    So every time the updateItem method is called a new ContextMenu is created, which binds some properties, but the old context menus remain in memory.
    I guess there could be many more example.
    How can I deal with it?

    I've dealt with this situation and created a Jira issue for it, but I also have a work-around that is a bit unwieldy but works. I'll share it with you.
    The bug that deals with this (in part atleast): http://javafx-jira.kenai.com/browse/RT-20616
    The solution is to use weak invalidation listeners, however they are a bit of a pain to use as you cannot do it with something simplistic as "bindWeakly"... and you need to keep a reference around to the wrapped listener otherwise it will just get garbage collected immediately (as it is only weakly referenced). Some very odd bugs can surface if weak listeners disappear randomly because you forgot to reference them :)
    Anyway, see this code below, it shows you some code that is called from a TreeCell's updateItem method (I've wrapped it in some more layers in my program, but it is essentially the same as an updateItem method):
    public class EpisodeCell extends DuoLineCell implements MediaNodeCell {
      private final WeakBinder binder = new WeakBinder();
      @Override
      public void configureCell(MediaNode mediaNode) {
        MediaItem item = mediaNode.getMediaItem();
        StringBinding episodeRange = MapBindings.selectString(mediaNode.dataMapProperty(), Episode.class, "episodeRange");
        binder.unbindAll();
        binder.bind(titleProperty(), MapBindings.selectString(mediaNode.dataMapProperty(), Media.class, "title"));
        binder.bind(ratingProperty(), MapBindings.selectDouble(mediaNode.dataMapProperty(), Media.class, "rating").divide(10));
        binder.bind(extraInfoProperty(), Bindings.when(episodeRange.isNull()).then(new SimpleStringProperty("Special")).otherwise(episodeRange));
        binder.bind(viewedProperty(), item.viewedProperty());
        subtitleProperty().set("");
    }This code makes use of a class called WeakBinder -- it is a helper class that can make Weak bindings and can keep track of them. When you call unbindAll() on it, all of the bindings it created before are released immediately (although they will also disappear when the Cell itself is garbage collected, which is possible because it only makes weak references).
    I've tested this extensively and it solves the problem of Cells keeping references to objects with much longer life cycles (in my case, the MediaNode passed in has a longer lifecycle than the cells and so it is important to bind weakly to it). Before this would create huge memory leaks (crashing my program within a minute if you kept refreshing the Tree)... now it survives hours atleast and the Heap usage stays in a fixed range which means it is correctly able to collect all garbage).
    The code for WeakBinder is below (you can consider it public domain, so use it as you see fit, or write your own):
    package hs.mediasystem.util;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import javafx.beans.InvalidationListener;
    import javafx.beans.Observable;
    import javafx.beans.WeakInvalidationListener;
    import javafx.beans.property.Property;
    import javafx.beans.value.ObservableValue;
    public class WeakBinder {
      private final List<Object> hardRefs = new ArrayList<>();
      private final Map<ObservableValue<?>, WeakInvalidationListener> listeners = new HashMap<>();
      public void unbindAll() {
        for(ObservableValue<?> observableValue : listeners.keySet()) {
          observableValue.removeListener(listeners.get(observableValue));
        hardRefs.clear();
        listeners.clear();
      public <T> void bind(final Property<T> property, final ObservableValue<? extends T> dest) {
        InvalidationListener invalidationListener = new InvalidationListener() {
          @Override
          public void invalidated(Observable observable) {
            property.setValue(dest.getValue());
        WeakInvalidationListener weakInvalidationListener = new WeakInvalidationListener(invalidationListener);
        listeners.put(dest, weakInvalidationListener);
        dest.addListener(weakInvalidationListener);
        property.setValue(dest.getValue());
        hardRefs.add(dest);
        hardRefs.add(invalidationListener);
    }Let me know if this solves your problem.

  • SA500 UPnP Memory Leak

    Looking at the release notes for firmware v1.1.21 I noticed that one of the known issues with this product line is a memory leak issue with UPnP.
    I am looking to purchase new devices for my network and this product line is one that I'm looking into.
    However, I plan to use UPnP extensivley on my network and will not purchase a device that has problems with it.
    Is there a time frame for this memory leak to be fixed?
    Something like a memory leak that can cause a device to lock up or reboot should be high priority to be fixed.

    The UPnP leak was found late in testing.  I don't have too much info on it, but I know they are looking to fix it soon.  I don't have a time frame and I believe the leak was small, but if you are using UPnP extensively, I would wait to avoid down time.

  • 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.

  • How to determine memory leaks?

    I tried in XCODE, the RUN/ Start with Performance TOol / and tried out the various options. I was running my app and looking to see if it would report increasing memory use but it seemed to be looking at my total system (i was running under the simulator). In general what is the recommended procedure for determining memory leaks, which tool to use, and what tracing can i use?
    How does one look at the retain count of an object? are there system routines that have knonw leaks?

    You took the right path. Once instruments comes up select the Leaks tool. Turn off automatic leak detection. In your app, start off at some known state, do something, and come back to the known state and check for leaks. For instance start off in a view, do something that brings up another view then come back to the original view and check for leaks. Leaks will show you if you leaked. Since you took a very deterministic path then checked it should be straight forward to go to the code and find / fix the leaks. Leaks shows you where the code where the leak was generated.

  • Memory Leak with Tomcat version update 3.2 to 6.0

    Hi, I've been trying to update tomcat from 3.2 to 6.0. My issue is that I have a memory leak(s?) that make the web application unusable. Currently in my setup I am using these components:
    Tomcat 6.0, sun JDK 1.6.0_01, mssql 2005, Microsoft SQL Server 2005 JDBC Driver 1.2, xalan 2.7.0, log4j 1.0.4 (should be only out of date component)
    It is a fairly large application that uses xslt with xalan and java servlets to display web pages. There was no issue with memory leaks before the update from tomcat 3.2, sun jdk 1.4.2 and old xalan and jdbc (for mssql 2000) components.
    My question for the community is, where should I be looking for my memory leak. Are there known issues with my setup?
    thanks for your help,
    Matt

    Just in case someone goes down the same road as me, my problem was actually the one listed on the page below. My threads are not being released after a StandardContext reload. Which I'm not sure if this leak applies to tomcat version <4 or not.
    http://opensource.atlassian.com/confluence/spring/pages/viewpage.action?pageId=2669

Maybe you are looking for

  • [solved] xorg proglem - won't start, but no error

    Hi folks! I'm new to Arch, my first installation, but I used to use Gentoo in the past. Got a problem with making X to run. I followed the guide from the wiki, but I didn't manage it to work. I'm using nVidia drivers from 173xx branch (GF 5900XT). Ha

  • Attachment link is not visible- external content server

    Hi All, I have integrated an external content server to SAP i have done following activities: 1) I have maintained content repository using Tcode OAC0 2) I have Maintained Global Doc Type (ZFININV  Finance Invoice scan doc document class: TIF) using

  • How can I "swap" text on re-load?

    Hola First to all, is this possible? Need you help to "guide" me to or help me find out how to swap text daily or on reload. For example, I have a div with a quote that I want to change daily (or on reload ) How can I do this? Thanks PS. I Google it

  • My video can't export cause of render problems!

    Hi there, I am trying to export my video as a digital video (.dv) but when I do it says it can't find a render file. I have gone to Sequence->Render All->Both. Renders the whole video then I go to export it and it still says that some render file is

  • Results Analysis Sales Order Issue

    Hi Fellows, When i am running the results analysis for Sales orders using KKAK transaction , I do not wish to see the WIP items with 0 Values.So i selected the option " Hide Orders with 0 values in Results List ". However I am still getting the WIP i