Forum Discussion

Vinoth_96603's avatar
Icon for Nimbostratus rankNimbostratus
Nov 16, 2010

OutOfMemory error




Using the iControl Java API, I had developed a data collection module for retrieving all the statistical values from the device for all the objects namely WideIp, Pool, PoolMember, etc., The Java program is executed periodically using a scheduler, which will trigger the data collection process. The scheduler is configured such a way that it'll trigger the data collection process every minute. When this scheduled program is executed indefinitely, after one hour, java heap memory is exhausted and OutOfMemory error is displayed in the log file. When the process is monitored, it has been noted that the heap memory is growing proportionately. In my code, all the variables are utilized such a way that, after the execution of a method the variables and objects are de-referenced appropriately, so that the objects would be eligible for garbage collection.



As per the heap memory monitoring results, more number of byte[] and byte[][] objects are initialized but not properly released. In my code, there are no variables or objects utilizing the byte[] or byte[][]. Probably, those objects are utilized by the iControl Library while communicating with the device and retrieving required details.



Could anyone please let me know whether it's a known issue in the iControl API? Please provide your suggestions or approach this handle this problem.



I had attached the image files representing the memory usage and object utilization in heap memory.






2 Replies

  • Vinoth, I'm assuming the memory error is occurring on the client side in your client java app. Your attachments didn't come through so I'm just making sure you aren't referring to a BIG-IP memory issue.



    With that being said, the iControl library for Java utilizes the Apache Axis generated client bindings based on the iControl WSDL files. I do know that we have many customers using the iControl library for Java and I haven't heard of this issue before.



    All the source is available in the iControl Assembly labs download section if you want to see what's going on in there.



    Have you isolated this to a certain method call or calls that I could go by to try to replicate this?







  • Thanks for your response Joe.



    As per my understanding, I'm not referring to BIG-IP memory issue. I suspect it could be due to the iControl library which interacts with the device through Web Service. Following are the methods used to retrieve the statistical data.










    Below is the flow of logic I had implemented in the code.


    1. Get the interfaces reference to the device


    2. Using the interfaces reference, retrieve the statistical data for Objects (WideIP, Pool, PoolMember, etc.,) using the above specified methods


    3. Store the retrieved data in my local database



    I'll go through the source of iControl library to analyze the root cause.