DI API objects0-memory leak
Dear All,
We have created a application to load AR Invoice and Incoming Payment through PowerBuilder.
While using DI API there is a memory leak.
ie.,After loading say 500 AR invoices and corresponding payment, the application seems to hang but after some time its processing fine.
While adding each invoice,in the task manager the memory usage is increasing proportionally for that application.
We found that while using DI API objects, the issue is produced.
We are using SAP B1 2007B PL08.
Any suggestion on this issue?
Hi Jambulingam,
I've seen other developers complaining about the same problem.
Take a look at this post. It may help.
DI Memory Leak
Regards,
Vítor Vieira
Similar Messages
-
Memory Leak Issue for Adobe Access iOS API
Hi,
We are trying to develop an iOS app (with ARC enabled) using Adobe Acces API 4.0 and we have identified that the function [drmManager createDRMSession] has memory leak.
DRMSESSION = [drmManager createDRMSession:METADATA playlist:PLAYLIST error:nil complete:^() {}];
We are using:
DRMSESSION -> weak
METADATA ->strong (as need to share within object)
PLAYLIST ->strong (as need to share within object)
After calling this function, the object is unable to dealloc and most of the leaking object related to networking (such as CFNetwork...)
Is this a known issue for the Adobe Access iOS API or we are missing some key steps.
Any suggestions is appreciated. Thanks in advance.ans0600, sorry about that, I read Hiroshi's forward too quickly. I've done a little digging and have come up with two work-arounds:
Create a file with ARC disabled to translate the returned object to be an autorelease
declare the returned DRMSession as __unsafe_unretained and use CFRelease, as noted on stackexchange
In the future we may change this method to return an autoreleased object to avoid this issue. Let us know if you have any further questions! -
IsJRockit Memory leak detector API available ?
I would like to write up a JAVA client to gather heap information, things like number of instances and memory size of given object(s). These info can be displayed by memory leak detector, so there has to be an interface. my question is that is this API available for me to use? what kind of license if any I need to purchase if I intend to use my client in production?
thanks in advance.Yes, JVMTI is a native interface and requires a non-java library. It's probably not a good idea to try to monitor a Java application by running more Java code in the same JVM because of the interference you create.
Regards,
/Staffan -
I can start my C_API JMS application and just create a JMS context. Looking at the windows task manager I see the memory footprint slowly grow.
I'm not a Java wizard so I haven't found the right tools set for diagnosing this.
Thanks for any helpHas anyone else tried to track a memory leak in a JNI application? How did you achive this task, what tools did you use?You write a library in C/C++ only which does NOT use JNI which implements the functionality you want to achieve in your java application.
You write a wrapper for that which excercises it completely including be able to run it in a loaded state.
Then you buy/find a C/C++ profiling tool and run it on the wrapper.
You write you JNI code such that the ONLY thing it does is interface between java and the library above. It doesn't impleent business logic nor work flow. -
Memory leak in JSpinner implementation (maybe others?)
Hi,
I am developing an application using Java and Swing, and have run into some problems with memory leaks. After examining the source code and making an example program (provided below), I can only come to the conclusion that there is a bug in the implementation of JSpinner in Sun Java 1.6.0_03.
If one uses a custom model with the JSpinner, it attaches itself as a listener to the model. However, it never removes the listening connection, even if the model is changed. This causes the JSpinner to be kept in memory as long as the model exists, even if all other references to the component have been removed.
An example program is available at http://eddie.dy.fi/~sampo/ModelTest.java . It is a simple swing program that has the JSpinner and two buttons, the first of which writes to stdout the listeners of the original model and the second changes the spinner model to a newly-created model. A sample output is below:
Running on 1.6.0_03 from Sun Microsystems Inc.
Listeners before connecting to JSpinner:
Model value is 0, 0 listeners connected:
Listeners after connecting to JSpinner:
Model value is 0, 2 listeners connected:
1: interface javax.swing.event.ChangeListener
2: javax.swing.JSpinner$ModelListener@9971ad
Listeners now:
Model value is 8, 2 listeners connected:
1: interface javax.swing.event.ChangeListener
2: javax.swing.JSpinner$ModelListener@9971ad
Changing spinner model.
Listeners now:
Model value is 8, 2 listeners connected:
1: interface javax.swing.event.ChangeListener
2: javax.swing.JSpinner$ModelListener@9971adThis shows that even though the model of the JSpinner has been changed, it still listens to the original model. I haven't looked at other components whether they retain connections to the old models as well.
In my case, I have an adaptor-model which provides a SpinnerModel interface to the actual data. The adaptor is implemented so that it listens to the underlying model only when it itself is being listened to. If the JComponents using the model were to remove the listening connections, it, too, would be automatically garbage-collected. However, since JSpinner does not remove the connections, the adaptor also continues to listen to the underlying model, and neither can be garbage-collected.
All in all, the listener-connections seem to be a very easy place to make memory leaks in Java and especially in Swing. However, as I see it, it would be a simple matter to make everything work automatically with one simple rule: Listen to the models only when necessary.
If a component is hidden (or alternatively has no contact to a parent JFrame or equivalent), it does not need to listen to the model and should remove the connections. When the component is again set visible (or connected to a frame) it can re-add the connections and re-read the current model values just as it does when initializing the component. Similarly, any adaptor-models should listen to the underlying model only when it itself is being listened to.
If the components were implemented in this way, one could simply remove a component from the frame and throw it away, and automatically any listener-connections will be removed and it can be garbage-collected. Similarly any adaptor-models are collected when they are no longer in use.
Changing the API implementation in this way would not require any changes to applications, as the only thing that changes are the listener-connections. Currently used separate connection-removing methods should still work, though they would be unnecessary any more. The API would look exactly the same from the view of an application programmer, only that she would not need to care about remnant listening connections. (As far as I can tell, the current API specification would allow the API to be implemented as described above, but it should of course require it to be implemented in such a way.)
Am I missing something, or is there some valid reason why the API is not implemented like this?
PS. I'm new to these forums, so if there is a better place to post these reports, please tell me. Thanks.Another cognition: It's the following code, that causes the memory to be accumulated:
obj = m_orb.resolve_initial_references("NameService");
ctx = NamingContextExtHelper.narrow(obj);For the first 4 calls to this code the memory usage of the nameservice is unchanged. From the 5th to the 8th call, it's increased by approx. 10KB per call. And thenceforward (beginning with the 9th call) it's increasing by approx. 10MB.
What's going wrong here? -
Hi All,
I had posted this query to couple of other groups ..I am still struglling with this issue..Hope someone will help me out here
I have very basic application which uses DataSerives over RTMP channel to populate dataGrid , I have not used any user defined component.
This application has got LOAD data and Remove data Button just to simulate the actual application
What happens , when I click on LOAD data , It loads the data from server(JBOSS) then I Remove all the data and force the GC to run
If I continuously keep loading and removing the data , memory goes up every time and after some times It reaches to threshold and finally crashes the Browser.
In actual application as soon as user logs in a dedicated DS destination is created..
private function createDestination(destName:String):void{
var remoteService:RemoteObject = new RemoteObject("DestinationManager");
remoteService.addEventListener(ResultEvent.RESULT, resultHandler,false,0,true);
var operation:AbstractOperation = remoteService.getOperation("createDestination");
operation.send(destName);
var cs:ChannelSet = new ChannelSet();
var rtmpChannel:RTMPChannel = ServerConfig.getChannel("my-rtmp") as RTMPChannel;
cs.addChannel(rtmpChannel);
tradeService = new DataService() ;
tradeService.destination=destName;
tradeService.channelSet = cs;
Now when user hits on Load data button to load the trade data ...
public function loadData():void
var remoteService:RemoteObject = new RemoteObject("filterRemoteVO");
var operation:AbstractOperation = remoteService.getOperation("loadData");
tradeService.fill(tradeCollection);
operation.send(rowData.text ,GUIID);
tradeList.dataProvider = tradeCollection;
Remove Data hit I clean all the resource and released collection :-
public function removeAll():void{
if(tradeList.dataProvider){
tradeCollection.source = new Array();
tradeList.dataProvider.source = new Array();
tradeList.dataProvider = null;
tradeService.release();
tradeService.releaseCollection(tradeCollection);
tradeService.channelSet.disconnectAll();
tradeService.disconnect();
tradeService.logout();
System.gc();
Except these 3 function I don't have any code which could cause memory leak.
I m using
LCDS 2.5
Flex 3.0
JBoss4.2
Please see the mxml file below , If possible please have a look at it , I might not be using dataSerice API correctly.
I have been trying to solve this leak for last two week , I really need help from you guys.
My client has already evaluating other contemporary technology because of this memory issue.
I have also created scalled down war file which can be deployed on any java application server.
Any help will greatly be appreciated
Regards,
Dam
######################## MXML##########################
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="init();" height="100%" width="100%"
>
<mx:Script >
<![CDATA[
import mx.containers.GridRow;
import mx.utils.Base64Decoder;
import mx.utils.StringUtil;
import mx.events.CollectionEvent;
import mx.formatters.Formatter;
import mx.events.ResizeEvent;
import mx.controls.DataGrid;
import mx.effects.Fade;
import mx.events.DataGridEvent;
import mx.utils.ObjectUtil;
import mx.events.ScrollEvent;
import mx.formatters.DateFormatter;
import mx.events.ListEvent;
import mx.data.mxml.DataService;
import mx.messaging.config.ServerConfig;
import mx.messaging.channels.RTMPChannel;
import mx.messaging.ChannelSet;
import mx.rpc.AbstractOperation;
import mx.rpc.remoting.RemoteObject;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import mx.messaging.messages.*;
import mx.messaging.events.*;
import mx.controls.Alert;
private var GUIID:String;
private var lastRollOverIndex:Number;
public var tradeService:DataService=null;
public var tradeCollection:ArrayCollection = new ArrayCollection();
public var flag:Boolean = false;
private function init():void {
var guiId:String ="TEST";
createDestination(GUIID);
public function getData():void{
// memory.text =""+ ((System.totalMemory / 1024)/1024);
public function releaseDataServices():void {
// tradeService.fill(null);
tradeService.release();
// tradeService.releaseCollection(tradeCollection);
tradeService.channelSet.disconnectAll();
tradeService.disconnect();
tradeService.logout();
//tradeService.dataStore = null;
/*Function for creating destination*/
private function createDestination(destName:String):void{
var remoteService:RemoteObject = new RemoteObject("DestinationManager");
remoteService.addEventListener(ResultEvent.RESULT, resultHandler,false,0,true);
var operation:AbstractOperation = remoteService.getOperation("createDestination");
operation.send(destName);
var cs:ChannelSet = new ChannelSet();
var rtmpChannel:RTMPChannel = ServerConfig.getChannel("my-rtmp") as RTMPChannel;
cs.addChannel(rtmpChannel);
tradeService = new DataService() ;
tradeService.destination=destName;
tradeService.channelSet = cs;
//This function calls dataservice fill method depending on wheather destination is created or not
private function resultHandler(event:ResultEvent):void{
//call data service as destination is created successfully
var status:Boolean = event.result as Boolean
// Alert.show("status="+status);
if(status){
getData();
else{
//TODO report error to MATS app
public function removeAll():void{
if(tradeList.dataProvider){
tradeCollection.source = new Array();
tradeList.dataProvider.source = new Array();
tradeList.dataProvider = null;
tradeService.release();
// tradeService.releaseCollection(tradeCollection);
tradeService.channelSet.disconnectAll();
tradeService.disconnect();
tradeService.logout();
System.gc();
public function loadData():void
var remoteService:RemoteObject = new RemoteObject("filterRemoteVO");
var operation:AbstractOperation = remoteService.getOperation("loadData");
tradeService.fill(tradeCollection);
operation.send(rowData.text ,GUIID);
tradeList.dataProvider = tradeCollection;
]]>
</mx:Script>
<mx:DataGrid id="tradeList"
initialize="tradeList.dataProvider = tradeCollection" horizontalScrollPolicy="auto"
height="659" x="0" y="84">
<mx:columns>
<mx:DataGridColumn headerText="Security Description" dataField="securityDesc"
/>
<mx:DataGridColumn headerText="B/S" dataField="transactionType"
/>
<mx:DataGridColumn headerText="Amount" dataField="amount"
/>
<mx:DataGridColumn headerText="Price Text" dataField="priceText"
/>
<mx:DataGridColumn headerText="Counterparty" dataField="counterParty"
/>
<mx:DataGridColumn headerText="Trade Date" dataField="tradeDate"
/>
<mx:DataGridColumn headerText="Settle Date" dataField="settleDate"
/>
<mx:DataGridColumn headerText="Trade Status" dataField="tradeStatusId"
/>
<mx:DataGridColumn headerText="Trader" dataField="trader"
/>
<mx:DataGridColumn headerText="Salesperson" dataField="salesperson"
/>
<mx:DataGridColumn headerText="Ticket Number" dataField="tradeNumber"
/>
<mx:DataGridColumn headerText="Entry Date" dataField="tradeTime"
/>
<mx:DataGridColumn headerText="Cancel Date" dataField="cancelDate"
/>
<mx:DataGridColumn headerText="Cancel Time" dataField="cancelTime"
/>
</mx:columns>
</mx:DataGrid >
<mx:Grid x="149" y="23" width="995">
<mx:GridRow width="100%" height="100%">
<mx:GridItem width="100%" height="100%">
<mx:Label text="Enter No of obejcts" width="111"/>
</mx:GridItem>
<mx:GridItem width="100%" height="100%">
<mx:TextInput name="row" id="rowData" width="97"/>
</mx:GridItem>
<mx:GridItem width="100%" height="100%">
<mx:Button label="Load Data" click='loadData()'/>
</mx:GridItem>
<mx:GridItem width="100%" height="100%">
<mx:Button label="removeAll" click='removeAll()'/>
</mx:GridItem>
<mx:GridItem width="100%" height="100%">
<mx:Label text="Total Memory"/>
</mx:GridItem>
<mx:GridItem width="100%" height="100%">
<mx:TextInput text="Total Memory" id="memory" width="97"/>
</mx:GridItem>
<mx:GridItem width="100%" height="100%">
<mx:Label text="Grid Row Count"/>
</mx:GridItem>
<mx:GridItem width="100%" height="100%">
<mx:TextInput name="GridRowCountN" id="GridRowCount" width="97"/>
</mx:GridItem>
</mx:GridRow>
</mx:Grid>
</mx:Application>Hi Natasha,
Sorry for late reply.
I tried your suggestion but It did not help to release memory. Actully,this app contains only one event handler which is for remote method call , I dont think this could cause any memory leak.
Profiling session reveals that It is the issue of DataService class.I dont know How do I convince Adobe to investigate this issue.
Regards,
Dharmendra -
Hi,
I am using OCCI library and oracle XE. There is noticeable amount memory leak in CreateEnvironment and CreateConneaction API funtions. I am not sure whether it is known problem. If the oracle server is down my application has to retry several times using these above mentioned methods and memory grows significantly.
Here is a simple program which creates environment and create connection and terminates immediately in a while loop. We see huge memory leak.
I have downloaded occi_gcc343,
Here is sample program which i tried.
#include <iostream>
#include <occi.h>
using namespace oracle::occi;
using namespace std;
int main(int argc, char* argv[])
Environment *env = NULL;
Connection *conn = NULL;
while(1)
Environment *env = Environment::createEnvironment(Environment::DEFAULT);
Connection *conn = env->createConnection ("cvo","cvo123","XE");
sleep(3);
env->terminateConnection (conn);
Environment::terminateEnvironment(env);
getchar();
return 0;
Please let me know if there is any patch available or is there anyway overcome from this problem.
Thanks,Can't really speak about the memory leak issue that you suspect with the library, but do note that that you do not need to terminate the environment in a reconnect loop. terminateEnvironment is meant to be called at program exit, not disconnect. This may help with the memory issue somewhat.
-
Memory leak with CGImageSourceCreateThumbnailAtIndex
After creating a thumbnail with CGImageSourceCreateThumbnailAtIndex, CGImageRelease doesn't seem to work!? I am rendering full-size thumbnails of PDF pages, and this just leaks memory:
void memLeakTest(CFStringRef sourcePath) {
printf("Running memLeakTest...
CFURLRef url = CFURLCreateWithString(NULL, sourcePath, NULL);
CGImageSourceRef imageSource = CGImageSourceCreateWithURL(url, NULL);
CFStringRef keys[3];
CFTypeRef values[3];
int n=0;
keys[n] = kCGImageSourceCreateThumbnailFromImageAlways;
values[n++] = kCFBooleanTrue; //If I set this to false, there is no leak, but I need the thumbnails
keys[n] = kCGImageSourceCreateThumbnailWithTransform;
values[n++] = kCFBooleanTrue;
keys[n] = kCGImageSourceShouldCache;
values[n++] = kCFBooleanFalse;
CFDictionaryRef options;
options = CFDictionaryCreate(kCFAllocatorDefault, (const void **)keys, values, n, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CGImageRef image = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, options);
CFRelease( imageSource );
CGImageRelease( image ); //Doesn't seem to have any effect. Memory continues to balloon.
CFRelease( url );
int main (int argc, const char * argv[]) {
CFStringRef pathUrl = CFSTR("file:/path/to/a/big.pdf");
while( true ) {
memLeakTest( pathUrl );
if( n < maxPages ) sleep(5); //Wait 5 seconds
return 0;I was able to fix the memory leak using the following code:
void memLeakTest(CFStringRef sourcePath) {
printf("Running memLeakTest...
CFURLRef url = CFURLCreateWithString(NULL, sourcePath, NULL);
CFStringRef keys[10];
CFTypeRef values[10];
int n=0;
//keys[n] = kCGImageSourceCreateThumbnailFromImageIfAbsent;
//values[n++] = kCFBooleanTrue;
keys[n] = kCGImageSourceCreateThumbnailFromImageAlways;
values[n++] = kCFBooleanTrue;
keys[n] = kCGImageSourceCreateThumbnailWithTransform;
values[n++] = kCFBooleanTrue;
keys[n] = kCGImageSourceShouldCache;
values[n++] = kCFBooleanFalse;
CFDictionaryRef options;
options = CFDictionaryCreate(kCFAllocatorDefault, (const void **)keys, values, n,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
//CGImageSourceRef imageSource = CGImageSourceCreateWithURL(url, options);
NSImage* imageFile = [[NSImage alloc] initByReferencingURL: (NSURL *)url];
NSData * data = [imageFile TIFFRepresentation];
CGImageSourceRef imageSource = CGImageSourceCreateWithData((CFDataRef)data, options);
CGImageRef image = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, options);
CFRelease( image );
CFRelease( imageSource );
[imageFile release];
CFRelease( options );
CFRelease( url );
There are a number of different graphics APIs you could use. I'm no expert in any of them, so I used the simple ones. The above code requires both Objective-C and an autorelease pool, but I'm sure you could use different functions to remove those requirements. -
Memory leak with multi-threaded environment
When starting an environment with the THREADED_MUTEXED
or THREADED_UNMUTEXED mode parameter, the oracle OCCI API
has a memory leak. This can be demonstrated by modifying
the "occidml.cpp" demo program as follows:
Replace line 26:
env = Environment::createEnvironment (Environment::DEFAULT);
with
env = Environment::createEnvironment (Environment::THREADED_MUTEXED);
And replace line 164:
demo->displayAllRows();
with
for (int ii=0; ii<10000; ii++) demo->displayAllRows();
Recompile and run the program, and use "top" to see the
size of the process's used memory continually increase
unbounded.
I am using the Oracle 9.2.0.1.0 database on Linux,
gcc version 2.96.
Is anyone aware of a fix for this problem?Yeah, I did suffer from this.
If possible , you can switch to using OCCI on Oracle 10G client , you will find no memory leak issue anymore.
Another issue is that OCCI is using default connection-blocking implementation , if a DB connection is blocked by accident just like plugging out the network link, you can not get any timeout or connection closed indications. You must implement your own OCCI connection timeout strategy, and you must kill the thread/process you are using. -
Memory leak with CryptGetProvParam
I suspect there is a memory leak in the function CryptGetProvParam. I made a Win32Console app in Visual Studio 2008 to recreate the problem. With the example app running it is possible to use Task Manager to see the memory usage of the .exe steadily increase
over time.
I called the app TestSecurityDescriptorWin32Console. Below I have pasted the contents of TestSecurityDescriptorWin32Console.cpp.
I am looking to verify that the problem is with the CryptGetProvParam function, and if this is the case then to get the bug fixed.
Thank you for any help
// TestSecurityDescriptorWin32Console.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <windows.h>
HCRYPTPROV GetContext();
void ModifyCryptProvSecurity(HCRYPTPROV hProv);
int _tmain(int argc, _TCHAR* argv[])
DWORD dwSDLen = 0;
HCRYPTPROV hProv = GetContext();
// get dwSDLen
printf("First CryptGetProvParam: %d\n",CryptGetProvParam(hProv,PP_KEYSET_SEC_DESCR, NULL, &dwSDLen, DACL_SECURITY_INFORMATION));
while (1) {
BYTE* pbSD = (BYTE*)LocalAlloc(LHND,dwSDLen);
PSECURITY_DESCRIPTOR
pSD = (PSECURITY_DESCRIPTOR)pbSD;
InitializeSecurityDescriptor(pSD,SECURITY_DESCRIPTOR_REVISION);
// make pbSD size dwSDLen
printf("Second CryptGetProvParam: %d\n",CryptGetProvParam(hProv,PP_KEYSET_SEC_DESCR, pbSD, &dwSDLen, DACL_SECURITY_INFORMATION));
SECURITY_DESCRIPTOR*
pSecurityDescriptor = (SECURITY_DESCRIPTOR*)pbSD;
if (pSecurityDescriptor->Owner != NULL) FreeSid(pSecurityDescriptor->Owner);
if (pSecurityDescriptor->Group != NULL) FreeSid(pSecurityDescriptor->Group);
if (pSecurityDescriptor->Sacl != NULL) LocalFree(pSecurityDescriptor->Sacl);
if (pSecurityDescriptor->Dacl != NULL) LocalFree(pSecurityDescriptor->Dacl);
LocalFree(pbSD);
Sleep(100);
return 0;
HCRYPTPROV GetContext()
HCRYPTPROV hProv = NULL;
HCRYPTKEY hKey = NULL;
CHAR szPPName[100];
DWORD dwPPNameLen = 100;
CHAR szPPContainer[100];
DWORD dwPPContainerLen = 100;
// Attempt to acquire a handle to the default key container.
if (CryptAcquireContext(
&hProv,
NULL,
MS_DEF_PROV,
PROV_RSA_FULL,
CRYPT_MACHINE_KEYSET))
printf("Opened default key container for crypto usage");
else
// Some sort of error occured...
printf("(Allowable) Error acquiring default key container for crypto usage - ");
// .. try to create default key container.
if(CryptAcquireContext(
&hProv,
NULL,
MS_DEF_PROV,
PROV_RSA_FULL,
CRYPT_MACHINE_KEYSET | CRYPT_NEWKEYSET))
printf("Created key container for crypto usage");
else
printf("Error Creating key container for crypto usage - ");
return (NULL);
// Get CSP name.
if(CryptGetProvParam(
hProv,
PP_NAME,
(BYTE *)szPPName,
&dwPPNameLen,
0))
printf("Key CSP name is '%s'",szPPName);
else
// Error getting key container name.
printf("Failed to retrieve CSP name - ");
// Get name of key container.
if(CryptGetProvParam(
hProv,
PP_CONTAINER,
(BYTE *)szPPContainer,
&dwPPContainerLen,
0))
printf("Key container provider name is '%s'",szPPContainer);
else
// Error getting key container name.
printf("Failed to retrieve key container name - \n");
return hProv;"BYTE* pbSD = (BYTE*)LocalAlloc(LHND,dwSDLen);"
LHND? It's surprising that this doesn't crash the program. Use LPTR.
More generally, stay away from LocalAlloc/LocalFree, use malloc/new/HeapAlloc. Use LocalAlloc only if the API you're working with specifically requires LocalAlloc, that's rare. -
Memory leak in ldap_parse_ds_event
Hi,
I'm doing some development with the eDir LDAP event API and noticed some
memory leakage. Valgrind points the finger at ldap_parse_ds_event:
==32146== 220 bytes in 5 blocks are definitely lost in loss record 4 of 5
==32146== at 0x401CCA0: calloc (vg_replace_malloc.c:279)
==32146== by 0x404D995: ber_memcalloc (memory.c:293)
==32146== by 0x404CEEB: ber_alloc_t (io.c:271)
==32146== by 0x404CF84: ber_dup (io.c:307)
==32146== by 0x40520DB: ldap_parse_intermediate (extended.c:374)
==32146== by 0x4174176: ldap_parse_ds_event
(/home/n4u_cm/ccm_wa/idc_n4u/cldap~sdk_2007June/cldap/nldapx/extensions/client/src/events.c:2325)
==32146== by 0x804AD94: main (idmtrace.c:839)
Is anybody from Novell labs about that can fix this? 44 bytes per message
received may not sound like a lot, but the code is dealing with trace
messages so it gets large rather quickly. The problem exists in the latest
June 2007 libraries, as well as the LDAP libraries released in eDir 8.7.3.9
and 8.8.1.
Thanks,
SteveHi Steve,
It would be very nice if you can supply me with sample code to reproduce
memory leak. I've no Linux box now but i'll try to reproduce the same
problem on NetWare platform. Also i need brief description of eDir event
to be monitored.
Best Regards,
Andrey Karyagin
ABG Card Technology
Software Development Department
[email protected] wrote:
> Hi,
> I'm doing some development with the eDir LDAP event API and noticed some
> memory leakage. Valgrind points the finger at ldap_parse_ds_event:
>
> ==32146== 220 bytes in 5 blocks are definitely lost in loss record 4 of 5
> ==32146== at 0x401CCA0: calloc (vg_replace_malloc.c:279)
> ==32146== by 0x404D995: ber_memcalloc (memory.c:293)
> ==32146== by 0x404CEEB: ber_alloc_t (io.c:271)
> ==32146== by 0x404CF84: ber_dup (io.c:307)
> ==32146== by 0x40520DB: ldap_parse_intermediate (extended.c:374)
> ==32146== by 0x4174176: ldap_parse_ds_event
> (/home/n4u_cm/ccm_wa/idc_n4u/cldap~sdk_2007June/cldap/nldapx/extensions/client/src/events.c:2325)
> ==32146== by 0x804AD94: main (idmtrace.c:839)
>
> Is anybody from Novell labs about that can fix this? 44 bytes per message
> received may not sound like a lot, but the code is dealing with trace
> messages so it gets large rather quickly. The problem exists in the latest
> June 2007 libraries, as well as the LDAP libraries released in eDir 8.7.3.9
> and 8.8.1.
>
> Thanks,
> Steve -
Hi All,
OS: Windows Embedded Compact 7 with updates till Feb 2015.
Hardware: AM335x based
Applications running: one serial port application and one tcpclient and tcpserver apps. all are managed (C#) applications
I am facing memory leak issue with our headless device.
When I connect the device to LAN network, memory usage keep increases and after few hour (some times <1 hour, some times 4-5 hour) devices go to hang state due to low memory.
I also tried to run the resource leak detector and found
1. NK.exe heap is increasing
2. on startup : API Handle Count = 4118, DuplicatedHandle - Count : 4,082, Size : 4,082 bytes
After few minutes: APIHandle - Count : 49,172, Size : 49,172 bytes, DuplicatedHandle - Count : 48,810, Size : 48,810 bytes
NK.exe heap increases as available RAM decreases.
our application heap is constant only. please find below memory snapshots taken by devhealth.
1. On device start up after all apps started
2. After 1 hour of device running. - refer attachment
where exactly might be this leak, any Guess?
Thank you...
rakeshHi tomleijen,
Thanks for your suggestions.
Even we tried without any user apps, then also we found ~1 MB increase in NK.exe heap every 30-40 min.
we have 2 images 1. with all WEC7 updates (Till feb 2015) and 2. without any of the WEC7 updates
almost same problem we are facing with both images.
rakesh -
Memory leak in DriverManager.registerDriver()
I am finding that when a driver is registered with the java.sql.DriverManager multiple times it runs the JVM out of memory (crashing it). I tested using the last three versions of the JDBC (thin) drivers through 8.1.7, using both Sun JDK 1.2.2 and 1.3 (final) on Linux. It takes only a 1-2 minutes to use all the memory. The following code should be sufficient to reproduce the issue:
import java.sql.*;
public class ClassLd {
public static void main(String[] args) {
try {
while (1==1) {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
} catch (Exception e) {
System.out.println("Error");
e.printStackTrace();
This produces the following error:
Exception in thread "main" java.lang.OutOfMemoryError
<<no stack trace available>>
The documentation clearly states that "You register the driver only once in
your Java application." However, a memory leak is still a nasty bug -- even if that line of documentation was skimmed.
Thanks,
slag
[email protected]If you are concerned about registering the same driver multiple times then you should use the DriverManager.deregisterDriver() API to clean up.
In your program the DriverManager has no choice but to hold on to all of the driver objects that you are creating and registering. -
Memory leak within FOProcessor class
Hi all,
I'm trying to use the XML Publisher API (5.6.2 and 5.6.3) to generate PDF documents from XSL templates and XML data in a J2EE environment (Jboss 4.0.5) with Struts but a memory leak occurs.
It seems not to be a multithreading issue because the leak is there even if the PDF documents are generated one by one.
I made many tests to isolate the leak and I have simplified my code as much as possible: it seems to happen within the FOProcessor class.
One of the tests generates 4,500 PDF documents (one at a time) from an XML file (3 KB) and an XSL file (74 KB with blanks). Nothing else is done with the Jboss server during this test. The XSL file was created before the test from a RTF file with XML Publisher. The memory leak is around 70 KB for each PDF document (around 300 MB for the whole test).
As you can see below from the heap histogram (taken at end of test after a full garbage collection) it seems that the XSL and XML elements/attributes are not released (and thus never garbage collected).
Did I miss something or is there an actual problem with the XML/XSL parsing within the XML Publisher API?
Thanks for your help.Object Histogram:
Size Count Class description
131376968 2353450 java.lang.Object[]
60389464 937300 char[]
48260304 335141 oracle.xml.parser.v2.XSLResultElement
35690000 2230625 oracle.xml.util.FastVector
24127104 1005296 java.lang.String
16539120 413478 oracle.xml.parser.v2.XSLNode$AttrValueTmpl
14757064 128058 int[]
13348768 417149 java.lang.ref.Finalizer
12701776 102220 * ConstMethodKlass
12544808 23433 byte[]
12204080 108965 oracle.xml.parser.v2.XSLText
8344600 86584 java.util.Hashtable$Entry[]
7363768 102220 * MethodKlass
5592784 138700 * SymbolKlass
5362256 335141 oracle.xml.parser.v2.XSLAttributeSet[]
5267336 8135 * ConstantPoolKlass
5234016 163563 java.util.TreeMap$Entry
5121744 213406 java.util.Hashtable$Entry
4900480 61256 oracle.xml.parser.v2.XPathStep
4087120 51089 java.lang.reflect.Method
3823216 40276 java.util.HashMap$Entry[]
3524696 8135 * InstanceKlassKlass
3378000 84450 java.util.Hashtable
3064872 127703 java.util.HashMap$Entry
2971904 6880 * ConstantPoolCacheKlass
2968560 26505 oracle.xml.parser.v2.XSLValueOf
2770656 24738 oracle.xml.parser.v2.XSLVariable
2167520 27094 oracle.xml.parser.v2.XPathFunctionCall
1880088 33573 oracle.xml.parser.v2.PathExpr
1726360 61482 java.lang.String[]
1573720 39343 java.util.HashMap
1476576 30762 oracle.xml.parser.v2.XSLExprValue
1460840 36521 java.util.TreeMap
1319360 23560 oracle.xml.parser.v2.XPathConstantExpr
1054976 16484 org.jboss.mx.server.InvocationContext
1001264 3546 * MethodDataKlass
887424 11049 short[]
835680 8705 java.lang.Class
830208 25944 oracle.xml.util.NSNameImpl
705816 29409 java.util.ArrayList
684152 4501 org.jboss.web.tomcat.tc5.session.SessionBasedClusteredSession
670288 14071 java.lang.Object[]
640832 10013 oracle.xml.parser.v2.XPathVarReference
561056 35066 javax.management.modelmbean.DescriptorSupport
556272 23178 EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap$Entry
552984 30451 java.lang.Class[]
494760 2945 oracle.xml.parser.v2.XSLTemplate
480792 20033 antlr.ANTLRHashString
442576 27661 java.lang.Integer
432096 4501 org.jboss.web.tomcat.statistics.ReplicationStatistics$TimeStatistic
429040 10726 org.hibernate.hql.ast.tree.Node
369880 9247 javax.management.modelmbean.ModelMBeanOperationInfo
312384 19524 java.util.TreeMap$3
305368 5453 java.net.URL
287392 8981 org.jboss.mx.interceptor.ReflectedDispatcher
259264 338 EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap$Entry[]
252280 4505 org.jboss.cache.lock.ReadWriteLockWithUpgrade
238600 5965 org.jboss.mx.interceptor.PersistenceInterceptor
238600 5965 org.jboss.mx.interceptor.AttributeDispatcher
236616 9859 org.jboss.mx.server.AbstractMBeanInvoker$OperationKey
219776 3434 java.lang.reflect.Constructor
206880 6465 javax.management.modelmbean.ModelMBeanAttributeInfo
193168 2259 java.lang.reflect.Method[]
173184 5412 java.lang.ref.SoftReference
164920 589 oracle.xml.parser.v2.XSLStylesheet
164464 541 * ObjArrayKlassKlass
152832 6368 org.dom4j.tree.DefaultAttribute
149472 2076 java.lang.reflect.Field
144160 4505 org.jboss.cache.Node
143160 5965 org.jboss.mx.interceptor.ModelMBeanAttributeInterceptor
140600 3515 org.apache.xerces.dom.DeferredTextImpl
140224 2740 javax.management.modelmbean.ModelMBeanAttributeInfo[]
139056 7658 boolean[]
134664 3359 java.lang.String[][]
131936 1178 oracle.xml.parser.v2.XSLCondition
131936 1178 oracle.xml.parser.v2.XSLForEach
129072 2668 javax.management.modelmbean.ModelMBeanOperationInfo[]
128952 5373 EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap$Entry
124776 1733 org.hibernate.hql.ast.tree.IdentNode
115200 1800 javax.management.modelmbean.ModelMBeanInfoSupport
113088 2356 oracle.xml.parser.v2.AdditiveExpr
109416 4559 java.beans.PropertyChangeSupport
108960 1135 java.io.ObjectStreamClass
108120 4505 org.jboss.cache.lock.IdentityLock
105864 345 long[]
98752 3086 java.io.ObjectStreamClass$WeakClassKey
97968 4082 java.util.Vector
96672 2014 java.util.Properties
94240 589 oracle.xml.parser.v2.XSLOutput
90072 3753 javax.management.ObjectName$Property
87432 3643 javax.management.MBeanParameterInfo
82368 858 org.hibernate.hql.ast.tree.DotNode
81248 5078 java.lang.Long
78656 1229 org.hibernate.mapping.Column
77664 4854 java.util.Collections$SynchronizedSet
77448 3227 java.util.LinkedList$Entry
73824 769 org.jboss.mx.modelmbean.XMBean
73536 4596 java.util.Hashtable$KeySet
72144 4509 EDU.oswego.cs.dl.util.concurrent.CopyOnWriteArraySet
72144 4509 EDU.oswego.cs.dl.util.concurrent.CopyOnWriteArrayList
72144 4509 org.jboss.cache.Fqn
72080 4505 org.jboss.cache.lock.ReadWriteLockWithUpgrade$WriterLock
72080 4505 org.jboss.cache.lock.LockStrategyRepeatableRead
72080 4505 org.jboss.cache.lock.ReadWriteLockWithUpgrade$ReaderLock
72080 4505 org.jboss.cache.lock.LockMap
72016 4501 org.apache.catalina.session.StandardSessionFacade
71776 4486 java.io.FileDescriptor
70680 589 oracle.xml.parser.v2.XSLCallTemplate
70680 589 oracle.xml.parser.v2.XSLApplyTemplates
70224 154 org.hibernate.persister.entity.SingleTableEntityPersister
68296 2774 javax.management.ObjectName$Property[]
68160 1065 org.apache.xerces.dom.DeferredElementNSImpl
67760 770 org.hibernate.loader.entity.EntityLoader
66992 19 EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap$Entry[]
65968 1178 oracle.xml.parser.v2.XPathFilterExpr
65968 589 oracle.xml.parser.v2.XMLUTF8Reader
64432 4027 java.util.HashSet
63648 1326 oracle.xml.parser.v2.XMLNode[]
63440 1586 org.hibernate.loader.DefaultEntityAliases
61256 589 oracle.xml.parser.v2.XSLNode
61256 589 oracle.xml.parser.v2.XMLReader
60816 2534 org.apache.xerces.xni.QName
57360 478 org.hibernate.hql.ast.tree.FromElement
56976 1187 org.hibernate.mapping.Property
56544 1178 oracle.xml.parser.v2.XSLNodeSetExpr
56544 1178 oracle.xml.parser.v2.MultiplicativeExpr
56544 1178 oracle.xml.parser.v2.EqualExpr
54384 618 oracle.xml.parser.v2.XMLError
49392 2783 javax.management.MBeanParameterInfo[]
47648 1489 java.util.LinkedHashMap$Entry
47120 589 oracle.xml.parser.v2.XMLByteReader[]
... -
Possible memory leak in C++ code
Hello,
I have a Java application that calls through JNI, functions in a C++ dll that use the GroupWise API (COM based). After the application creates a number of accounts in GroupWise the memory footprint of the java.exe process reaches ~1.5GB of RAM on a 32 bit Windows OS. After reaching this value, the C++ code no longer works, meaning that connecting to GroupWise fails. If I restart the application at this point everything starts to work until it reached ~1.5 GB again.
I am suspecting that the problem might be caused by a memory leak. I have taken a dump of the java process with jmap and analyzed it with jhat. If I have not released an object in C++ code, would this object be visible in the dump i took of the java.exe process? The biggest consumer from what i have seen in the dump is class [B 20353-instances 33259261-bytes.
Has anyone else tried to track a memory leak in a JNI application? How did you achive this task, what tools did you use?
Thank you,
Ionut Marin.Has anyone else tried to track a memory leak in a JNI application? How did you achive this task, what tools did you use?You write a library in C/C++ only which does NOT use JNI which implements the functionality you want to achieve in your java application.
You write a wrapper for that which excercises it completely including be able to run it in a loaded state.
Then you buy/find a C/C++ profiling tool and run it on the wrapper.
You write you JNI code such that the ONLY thing it does is interface between java and the library above. It doesn't impleent business logic nor work flow.
Maybe you are looking for
-
Transfer Open Item documents to Another Client
Hi sirs, 5 Companies are being merged, we already have setup a new company on separate server, abap requirement is that all Open items GL/VENDOR/CUSTOMER should be transferred to the new server / new company. They already mapped the required fields s
-
I have a partioned table named bUsers and name of partion is Partion1. How can I use DBMS_Space to get information. Please guide me. Regards, null
-
How can I get the phone to recognize mini SD Card?
I have a 32G Sandisk SD Card in the G4 mini but one day the phone said the card was blank and unsupported. I purchased another SD Card and installed it however the phone does not recognize that I have an SD card. When I try and save music or pics t
-
Error with HelloWorldApp.Java
cannot read: HelloWorldApp.java from the tutorial. I use a string to get to the javac file and i still get the message. The file is a notepad file.
-
In OS (:C) Have stupid amount of files that are not in proper places Run Win IE 10 IE browser and bing on touch screen for engine and google.com on the desktop of PC. Looks like files were torn apart, then new folders created. (Diff Areas) check pr