Regarding Memory leak
Hi all,
I want to know if following makes some leak.
NSString *str;
@property(nonatomic,retain) NSString *str;
@synthesize str;
- (void) printVal:(NSString *str1)
Calling as
printVal(str);
I want to know do i need to release str1 or is there any memory leak related to str1 within printVal() function for following cases:
1) 'str' is allocated value as
str = [[NSString alloc] initWithString:@"sampleText"];
2) 'str' is allocated value as
str = @"sampleText"
Any help is appreciated.
Thanks...
I'm not an expert on memory management so maybe someone else can correct me. I don't think you'll need to release str1 however, you do need to release str because you "retain"ed it (which you may already do elsewhere not shown).
Similar Messages
-
Allocated memory pool was not deleted! 1 GB memory leak is too much for me!
Dear Sirs. I found that DB environment, that was configured to use 1 GB cache size, won't free it when closed! Why? First I tried to open and close environment and got the following:
Detected memory leaks!
Dumping objects ->
{596} normal block at 0x01970040, 1048596 bytes long.
Data: < > 14 00 10 00 DB DB DB DB 0B 00 10 00 01 00 00 00
{578} normal block at 0x00397978, 464 bytes long.
Data: < > D0 01 00 00 DB DB DB DB C7 01 00 00 01 00 00 00
Object dump complete.
I have and idea that BDB will reuse the memory, rite? OK, let's try to create the same environment and open it. After environment was opened, closed, opened again and again closed, I got the following:
Detected memory leaks!
Dumping objects ->
{3663} normal block at 0x01B80040, 1048596 bytes long.
Data: < > 14 00 10 00 DB DB DB DB 0B 00 10 00 01 00 00 00
{3645} normal block at 0x00396E60, 464 bytes long.
Data: < > D0 01 00 00 DB DB DB DB C7 01 00 00 01 00 00 00
{596} normal block at 0x01970040, 1048596 bytes long.
Data: < > 14 00 10 00 DB DB DB DB 0B 00 10 00 01 00 00 00
{578} normal block at 0x00397978, 464 bytes long.
Data: < > D0 01 00 00 DB DB DB DB C7 01 00 00 01 00 00 00
Object dump complete.
So memory was not reused, nor deallocated.
By the way, you may be interested in other leak I found, but fixed, see
Replication manager memory leak when setting local site information.
This leak is more serious, I am not sure I will fix it quickly. Maybe I'm doing something wrong? Could you please suggest something?
Thanks in advance!
With regards,
Vladislav.OK, the problem solved by fixing code in file 'log.c', method '__log_dbenv_refresh'.
Just added the code that deallocates memory of bulk buffer.
if (IS_ENV_REPLICATED(dbenv))
if (lp->bulk_buf != INVALID_ROFF)
__db_shalloc_free(&dblp->reginfo, lp->bulk_buf);
lp->bulk_buf = INVALID_ROFF;
lp->bulk_len = 0;
lp->bulk_off = 0;
It was allocated in the '__log_open' function, by the following code:
lp->ready_lsn = lp->lsn;
if (IS_ENV_REPLICATED(dbenv)) {
if ((ret = __db_shalloc(&dblp->reginfo, MEGABYTE, 0,
&bulk)) != 0)
goto err;
lp->bulk_buf = R_OFFSET(&dblp->reginfo, bulk);
lp->bulk_len = MEGABYTE;
lp->bulk_off = 0;
} else {
lp->bulk_buf = INVALID_ROFF;
lp->bulk_len = 0;
lp->bulk_off = 0;
Sorry for time taken to read my posts, I was really needy in quick help, but solved problems myself. -
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 -
JBoss EAP 6 On JRockit - Memory Leak
hello team.
I have memory leak problem on jboss and jrockit.
My Environment :
1. OS :
CentOS release 6.4 (Final)
2. JRockit :
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Oracle JRockit(R) (build R28.2.7-7-155314-1.6.0_45-20130329-0641-linux-x86_64, compiled mode)
3. Application Server:
JBoss EAP 6.2.0.GA
4. Application
Large EJB Application (100 and more EJB Beans (Stateless, Stateful, MDB, Timers and so on)
Everything works fine on older application server versions (4.3 , 4.2)
But now I have Problem
Of course I know that problem is new version - and i have discussion on JBoss forums.
but guys I have question about jrockit with you:
What is the option "Other" in memory ??
[jboss@jboss-new bin]$ jrcmd 17114 print_memusage
17114:
Total mapped 8457864KB (reserved=2983100KB)
- Java heap 3145728KB (reserved=0KB)
- GC tables 105232KB
- Thread stacks 46412KB (#threads=138)
- Compiled code 1048576KB (used=12257KB)
- Internal 1480KB
- OS 170324KB
- Other 3639056KB
- Classblocks 10496KB (malloced=9631KB #28393)
- Java class data 289536KB (malloced=192391KB #133697 in 28393 classes)
- Native memory tracking 1024KB (malloced=294KB #10)
[jboss@jboss-new bin]$
This size increases every time - and took entire amount of RAM.
Thank in Advance.
Regards,
Paata LominadzeNot sure what the 'other' is, but it is probably best shown by using an example. By using displayMap we can display a memory map of various JVM subsystems and libraries that are loaded, including third-party libraries.
./jrcmd 4523 print_memusage displayMap
Total mapped 3984796KB (reserved=2978740KB)
- Java heap 524288KB (reserved=0KB)
- GC tables 17548KB
- Thread stacks 20276KB (#threads=39)
- Compiled code 1048576KB (used=14224KB)
- Internal 1672KB
- OS 146924KB
- Other 2092648KB
- Classblocks 7424KB (malloced=7381KB #20064)
- Java class data 124416KB (malloced=124411KB #91048 in 20064 classes)
- Native memory tracking 1024KB (malloced=118KB #10)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
OS *java r x 0x0000000000400000.( 76KB)
OS *java rw 0x0000000000612000.( 4KB)
OS *[heap] rw 0x00000000007c1000.( 132KB)
INT Poll r 0x000000007fffe000 ( 4KB)
INT Membar rw 0x000000007ffff000.( 4KB)
MSP Classblocks (1/2) rw 0x00000000df8c0000 ( 6912KB)
MSP Classblocks (2/2) rw 0x00000000dff80000 ( 512KB)
HEAP Java heap rw 0x00000000e0000000.( 524288KB)
OS *ld-2.12.so r x 0x0000003664400000.( 128KB)
OS *ld-2.12.so r 0x000000366461f000 ( 4KB)
OS *ld-2.12.so rw 0x0000003664620000 ( 4KB)
OS **ld-2.12.so rw 0x0000003664621000.( 4KB)
OS *gconv-modules.cache r 0x00007f8f2e4a0000 ( 28KB)
THREAD Stack 4630 rwx 0x00007f8f2e4a7000 ( 8KB)
THREAD Stack 4630 0x00007f8f2e4a9000 ( 12KB)
THREAD Stack 4630 rwx 0x00007f8f2e4ac000 ( 244KB)
MSP Java class data (5/37) rw 0x00007f8f2e4e9000 ( 14336KB)
MSP Java class data (9/37) rw 0x00007f8f2fa40000 ( 5888KB)
rw 0x00007f8f30000000 ( 188KB)
0x00007f8f3002f000 ( 65348KB)
rw 0x00007f8f34000000 ( 132KB)
0x00007f8f34021000 ( 65404KB)
rw 0x00007f8f38000000 ( 412KB)
0x00007f8f38067000.( 65124KB)
MSP Java class data (10/37) rw 0x00007f8f3c034000 ( 34048KB)
rw 0x00007f8f3e174000 ( 8200KB)
MSP Java class data (11/37) rw 0x00007f8f3e976000 ( 256KB)
OS *libhpi.so rw 0x00007f8fb37fc000 ( 8KB)
OS **libhpi.so rw 0x00007f8fb37fe000 ( 4KB)
CODE Compiled code rwx 0x00007f8fb37ff000 ( 64KB)
CODE Compiled code rwx 0x00007f8fb380f000 ( 128KB)
CODE Compiled code rwx 0x00007f8fb382f000 ( 64KB)
MSP Java class data (37/37) rw 0x00007f8ff83a1000 ( 512KB)
GC Modified Union Set (committed) rw 0x00007f8ff8421000 ( 132KB)
GC Card table rw 0x00007f8ff8442000 ( 1024KB)
GC Object bits (committed) rw 0x00007f8ff8542000 ( 8196KB)
Here
- thread is thread related (such as thread stacks)
- int, internal use (such as pointer pages)
- heap, chunk used by JRockit for the Java heap
- os, mapped directly from the operating system, such as third party DLLs or shared objects
- msp, memory space. a memory space is a native heap with a specific purpose, for example native memory allocation inside the JVM
- gc, garbage collection related, for example live bits
- code, compiled code
The 'other' memory space looks to me (from the blank entries in the above print-out) like they are a memory pages to are still not used. When the JVM starts it mappes an amount of memory. To my knowledge JRockit uses mmap (mmap(2) - Linux manual page), which creates a new mapping in the virtual address space. JRockit reserves an amount of memory (Java Heap (heap where your object instances go) + its own runtime (all the others)).
To see where the growth is in the various memory spaces, you can use 'print_memusage baseline', after which you can execute print_memusage again, for example,
./jrcmd 4523 print_memusage scale=M
4523:
Total mapped 3896MB +4MB (reserved=2905MB -3MB)
- Java heap 512MB (reserved=0MB)
- GC tables 17MB
- Thread stacks 19MB (#threads=39)
- Compiled code 1024MB (used=14MB +1MB)
- Internal 1MB
- OS 143MB
- Other 2043MB
- Classblocks 7MB (malloced=7MB #20596 +532)
- Java class data 126MB +4MB (malloced=125MB +4MB #93640 +2592 in 20596 classes)
- Native memory tracking 1MB (malloced=0MB #20 +10)
Note the additional column that prints out the difference in memory usage in relation to the baseline. You can also monitor native allocations by using trace_alloc_sites, memory allocations can then be displayed with different levels of detail using the level argument.
./jrcmd 4523 print_memusage trace_alloc_sites=true
4523:
Total mapped 3989660KB +4864KB (reserved=2974732KB -4008KB)
- Java heap 524288KB (reserved=0KB)
- GC tables 17548KB
- Thread stacks 20276KB (#threads=39)
- Compiled code 1048576KB (used=15265KB +1040KB)
- Internal 1672KB
- OS 146924KB
- Other 2092648KB
- Classblocks 7680KB +256KB (malloced=7669KB +287KB #20596 +532)
- Java class data 129024KB +4608KB (malloced=128967KB +4555KB #93640 +2592 in 20596 classes)
- Native memory tracking 1024KB (malloced=236KB +118KB #20 +10)
./jrcmd 4523 print_memusage level=3
4523:
Total mapped 3989660KB +4864KB (reserved=2974732KB -4008KB)
- Java heap 524288KB (reserved=0KB)
- GC tables 17548KB
- Thread stacks 20276KB (#threads=39)
- Compiled code 1048576KB (used=15265KB +1040KB)
- Internal 1672KB
- OS 146924KB
- Other 2092648KB
- Classblocks 7680KB +256KB (malloced=2KB -7379KB #4 -20060) Not fully traced
- Java class data 129024KB +4608KB (malloced=26KB -124385KB #16 -91032 in 20596 classes) Not fully traced.
- Native memory tracking 1024KB (malloced=118KB #10) Not fully traced.
gather_memorymap_database memtrace.c: 206 91KB +91KB (#1 +1)
gather_memory_usage osal_mspace.c:5142 7KB +7KB (#4 +4)
msGatherMSpacesUsageDatabase osal_mspace.c:6128 2KB +2KB (#1 +1)
msGatherMSpacesUsageDatabase osal_mspace.c:6134 16KB +16KB (#1 +1)
Note this is more on the JVM level, in your case in might be beneficial to investigate what is happening on the java heap. By using print_object_summary you can get insight how memory on the heap is used on a per-class basis. To get to the bottom of where the memory leak is you can use the memory-leak-detector (an example of its use can be found here Middleware Snippets: Fast, Faster, JRockit). You can also obtain a heapdump that can be analyzed by using for example MAT (see for an example here Middleware Snippets: Visualizing Class Loading). To obtain a heapdump you can run the command, for example,
[weblogic@machine1 bin]$ ./jrcmd 4523 runsystemgc full=true fullcompact=true
4523:
[weblogic@machine1 bin]$ ./jrcmd 4523 hprofdump filename=/home/weblogic/dump.hprof
4523:
Wrote dump to /home/weblogic/dump.hprof
Note that this first issues a full GC by using the runsystemgc command. -
Memory leak in Tomcat 5.5
Hi all, i am experiencing memory leaks while using tomcat 5.5 and mysql connector 3.1.7.. While running the attached code tomcat swallows up to 20 mb and doesnt return it. I close down everything but the app still leaks mem. For now it's not an issue (Tomcat stays below 60mb mem of 1gb), however running this app on serveral clients will dramatically increase the memory allocation.
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.awt.Image;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class Thumbs extends HttpServlet {
private String dbDriver = "com.mysql.jdbc.Driver";
private String dbURL = "jdbc:mysql://localhost/webapp?";
private String userID = "javauser";
private String passwd = "javadude";
private Connection dbConnection;
//Initialize global variables
public void init() throws ServletException {
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
String maxDim = "";
String siteString = request.getParameterValues("s")[0];
if (request.getParameterValues("d") != null){
maxDim = request.getParameterValues("d")[0];
if (maxDim == ""){
response.setContentType("image/jpeg");
OutputStream out = response.getOutputStream();
writePicture(out,siteString);
else{
if (siteString != null) {
int maxDimension = Integer.parseInt(maxDim);
response.setContentType("image/jpeg");
OutputStream out = response.getOutputStream();
writeThumbnailPicture(out, siteString, maxDimension);
} catch (Exception ex){
ex.printStackTrace();
log(ex.getMessage());
public void writePicture(OutputStream out, String siteID){
try{
Class.forName(dbDriver);
dbConnection = DriverManager.getConnection(dbURL, userID, passwd);
PreparedStatement stmt = dbConnection.prepareStatement("select * from webcatalog where ID = ?");
stmt.setString(1,siteID);
stmt.executeQuery();
ResultSet rs = stmt.getResultSet();
if (rs.next()) {
byte[] data = rs.getBytes("Picture");
if (data != null) {
Image inImage = new ImageIcon(data).getImage();
BufferedImage outImage = new BufferedImage(inImage.getWidth(null),
inImage.getHeight(null),
BufferedImage.TYPE_INT_RGB);
// Paint image.
Graphics2D g2d = outImage.createGraphics();
g2d.drawImage(inImage,null,null);
// JPEG-encode the image
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(outImage);
out.close();
rs.close();
stmt.close();
dbConnection.close();
}catch(Exception ex){
ex.printStackTrace();
public void writeThumbnailPicture(OutputStream out,String siteID,int maxDimension){
try{
Class.forName(dbDriver);
dbConnection = DriverManager.getConnection(dbURL, userID, passwd);
PreparedStatement stmt = dbConnection.prepareStatement("select * from webcatalog where ID = ?");
stmt.setString(1,siteID);
stmt.executeQuery();
ResultSet rs = stmt.getResultSet();
if (rs.next()) {
byte[] data = rs.getBytes("Picture");
if (data != null) {
Image inImage = new ImageIcon(data).getImage();
// Determine the scale.
double scale = (double)maxDimension / (double)inImage.getHeight(null);
if (inImage.getWidth(null) > inImage.getHeight(null)) {
scale = (double)maxDimension /(double)inImage.getWidth(null);
// Determine size of new image.
// One of them should equal maxDim.
int scaledW = (int)(scale*inImage.getWidth(null));
int scaledH = (int)(scale*inImage.getHeight(null));
// Create an image buffer in
//which to paint on.
BufferedImage outImage = new BufferedImage(scaledW, scaledH,
BufferedImage.TYPE_INT_RGB);
// Set the scale.
AffineTransform tx = new AffineTransform();
// If the image is smaller than
// the desired image size,
// don't bother scaling.
if (scale < 1.0d) {
tx.scale(scale, scale);
// Paint image.
Graphics2D g2d = outImage.createGraphics();
g2d.drawImage(inImage, tx, null);
g2d.dispose();
// JPEG-encode the image
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(outImage);
out.close();
rs.close();
stmt.close();
dbConnection.close();
catch(Exception ex){
ex.printStackTrace();
//Clean up resources
public void destroy() {
private void jbInit() throws Exception {
}you can try this:
open your connection outside the function, and then pass it like as a parameter...
writePicture(OutputStream out, String siteID, Connection conn)
this can solve the problem because opening the connection inside the function spends a lot of memory...
Hope this can help you
Regards
Fernando -
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 -
Memory Leak in BI SDK with XMLA Connector ?
Hi,
I am using BI SDK 3.5 with XMLA Connector. I noticed that in com.sap.ip.bi.sdk.dac.connector.xmla.impl.Connection class, the LocalTransaction object is rollbacked when the close() method is called.
This makes a call to the endTransaction() method of Repository class with "true" parameter and leads to informations storage into a RepositoryDBMemory instance.
The only way I found to avoid this is to call the endTransaction() method with "false" as parameter, which is what is done in commit() method of the LocalTransaction class.
So, I tried to commit the transaction before closing the connection but in XMLA mode, the getLocalTransaction() method throws an BIResourceException so it is impossible to commit it. This is the first issue.
Second issue: it seems that data hold by the DataSetContentHandler is not freed. I tried using SAP Parser, Xerces, Java Parser but it has no effect. I hava a MDX query that returns 13000 lines, the XML file size is about 15Mo.
In a for loop with 10 operations, it leads to a OutOfMemory error quickly (only 7 iterations OK with -Xmx256m -Xms256m options). On each iteration, the memory grows about 25 to 30Mo !
For the first point, I do not call the close method on the connection object and it is garbage collected (but, in my opinion, it is quite strange not calling the close() method on a connection object).
For the second one (DataSetContentHandler), I have no idea. Has someone already encounter this problem ? The Netbeans profiler tells me it is this object that holds all java.lang.String objects. Is it right ?
I saw in DataSetContentHandler class that it has two static fields: one for the row cursor of the dataset, the other one for column cursor. Why ? Is it OK in a multi-threaded context ?
<b>This is urgent as we will not put the project in production mode with such a memory leak ! We must find the problem very quickly.</b>
Thanks in advance for any help you might give to me !
Regards,
David Degardin (Ubik-Ingenierie)I found the same thing. Tracing the execution back I found the only place this function was called was as part of the setup, so you shouldn't have to worry about it getting called multiple times and leaking memory. The trouble seems to be when the AudioPlayer dealloc method is called, the memory is not cleaned up.
My fix was to modify the dealloc in AudioQueueObject to check to see if audioLevels is nil and, if not, free it. This seems to have fixed the problem. -
Hi all,
I have a problem with 2 SunFire 240 (4Gb of Ram) with solaris 10 in a Veritas Cluster.
These nodes are 2 NFS server and they have 10 nfs client.
We have a memory leak on these servers. The memory utilization increase day by day.
The memory seems to be allocated by the kernel and not from some process.
So I would like to know if this is a common issue (NFS?) or this is a single case.
Thanks in advance for you help
Regards
Daniele
Edited by: Danx on Jan 2, 2008 5:23 PMThat message relates to how the application deals with its threads, which for a the most part isn't actually an issue. However, since it does have the potential to cause a leak under certain circumstances we did make a change in 10.3 to address that issue, so I suggest you upgrade to that release.
-
Memory leak issue on Blackberry Torch 9860
I own a Blackberry Torch 9860 Os 7.0 Bundle 1465 for the last 5 months
Previously I had Blackberry Curve 9300 which I had upgraded to OS 6.0. It had memory leak issues wherein my application memory would gradually dropdown to merely KBs within a few days and I had to reboot it to restore the same.
When I purchased Torch 9860, I migrated my device settings from Curve to Torch using the Desktop Manager. I face the same memory leak issues in this new device as well. I have 3 email accounts configured on my device and some social networking applications which include facebook, twitter, and some messengers. I usually delete my emails and keep only a few useful mails for reference. Still I am facing this issue wherein I have to reboot my device to restore the application memory. It starts from 152 Mb and usually dropsdown to merely Kilobytes of memory. The phone freezes for around 1-2 minutes sometimes when I am on call, or accessing my contacts.
Also to let you know that I have a 8GB memory card on my phone which has around 1.6 GB free space. I have disabled Compression on my memory card as well.
Please advise as I am having a hard time using this time this way.
Regards,
Abhinav Sharma
Thanks and regards,
Abhinav SharmaI have the almost same problem when i run the phone gap app on the 9800 torch OS 6 than this build of 1.2 MB takes the memory of 40 MB at run time and the device gives the low memory message and close the app forcefully.
In my app phone gap is using 3-4 html pages and java script .
And when i navigate on these pages it gives this message of memory low.
Please help me to out of this .
And please suggest if any professional help in this
Thanks\\\
Vipin Tomer -
Memory leak in JCO when calling an ABAP-function that returns larg tables
Hello everybody,
I think discovered a memory leak in JCO when the calling functionions that have exporting tables with large datasets. For example the ABAP-function RFC_READ_TABLE, which in this example I use to retrieve data from a table called "RSZELTTXT", which contains ~ 120000 datasets. RFC_READ_TABLE exports the data as table "DATA".
Here a simple JUnit test:
http://pastebin.ca/1420451
When running it with Sun Java 1.6 with standard heap size of 64mb I get a heapsize OutOfMemory error:
http://pastebin.ca/1420472
Looking at the heap dump (which I unfortunately cannot post here, because of it' size), I can see that I've 65000 char[512] array objects in my heap, which don't get cleaned up. I think, each char[512] array stands for one dataset in the exporting table "DATA", since the table contains 120000 datasets, the heap is full after the first 65000 datasets are parsed. Apparently, JCO tries to read all datasets in memory instead of justing reading the dataset to which the pointer (JCoTable.setRow(i)) currently points to and releasing it from memory after the pointer moves forward ...
Did anybody else experience this?
Is SAP going to remove to issue in upcoming versions of JCO?
regards SamirHi,
Check Below links
1) How To Analyze Performance Problems JCO
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/3fbea790-0201-0010-6481-8370ebc3c17d
2) How to Avoid Memory Leaks
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c3e598fe-0601-0010-e990-b8622840c8c2
Salil...
Edited by: salil chavan on Jun 2, 2009 5:21 AM -
Hi,
We are facing a memory leak issue in terminateConnection() function. Here is a sample code regarding that. We have run around 1.5 hours simultaneously and it was consuming around 250MB for this simple program. How could I resolve this problem ?
bool test()
string userName = "mapserver";
string password = "a";
string connectString = "//localhost:1521/orcl";
string query = "SELECT GEOMETRY AS GEOM FROM AG_WATER";
Environment *env = Environment::createEnvironment(Environment::OBJECT);
Connection *conn;
Statement *stmt;
ResultSet *rs;
try{
conn = env->createConnection(userName, password, "");
catch (SQLException ex) {
printf("ORACLE execution error: [Error Code : %d] : %s\n", ex.getErrorCode(), ex.getMessage().c_str());
return false;
env->terminateConnection(conn);
stmt = NULL;
conn = NULL;
rs = NULL;
Environment::terminateEnvironment(env);
return true;
int main()
OracleResultSet pResultSet;
while (true) {
test();
return 0;
Does any body help me to find out this problem ???This is not a web dynpro related question. Please restrict the questions in this forum to the Web Dynpro ABAP topic.
-
Hi all,
I am currently looking at a memory leak issue in the TCL UDP socket configuration when the fconfigure command is issued under a procedure.
Under a normal scenario where the socket is configured globally, the system handles the memory well and we do not see an increase.
The folowing examples are not the actual code implemented but provide an example of the condition under which the leak is seen.
set msg [udp_open]
fconfigure $msg -blocking false -buffering none -translation binary -remote [list 10.70.0.112 1234]
proc send {} {
global msg
puts -nonewline $msg "HELLOHELLOHELLOHELLOHELLOHELLOHELLOHELLOHELLO"
return
set done 0
while {($done <= 1000)} {
set done [expr {$done + 1}]
after 250
send
If we wish do dynamically modify the parameters of the socket, we get an ever increasing consumption of memory (show memory dead - decrease in processor free). for example:
set clients [list]
lappend clients "10.70.0.111 1234"
lappend clients "10.70.0.112 1234"
set msg [udp_open]
fconfigure $msg -blocking false -buffering none -translation binary
proc send {} {
global clients
global msg
foreach peer $clients {
fconfigure $msg -remote $peer
puts -nonewline $msg "HELLOHELLOHELLOHELLOHELLOHELLOHELLOHELLOHELLO"
return
set done 0
while {($done <= 1000)} {
set done [expr {$done + 1}]
after 250
send
I have tested multiple scenatios using flush, return, closing and opening the socket within the procedure, all to the same result - fconfigure in a procedure creates a memory leak in line with the data rate passing through the socket.
I am seeing this across multiple device types and IOS (819,5915,5940,2901,2921,3945) 15 series M/T/GC IOS. I guess the question is, is there a problem with the construct of the procedure in which I am missing something on the channel side to release the memory or does this appear to be a bug?
any help would be appreciated.
Regards,
Robert.Hi,
could you please tell me the package version number you are using?
You can obtain it by calling "package re udp".
thx -
Memory Leak using CertOpenStore on Windows 2008 R2
I have a program (runs both 32 and 64 bit ) that when using CertOpenStore results in a memory leak on Windows 2008 R2 only (I haven't tried 2012, but this code has run for years on 2000, 2003, 2008 without issues)
Sample code to reproduce the issue:
int main( int argc, char** argv )
HCERTSTORE store;
int go = 1;
while( go ){
store = CertOpenStore(
CERT_STORE_PROV_SYSTEM_A,
0,
0,
CERT_SYSTEM_STORE_LOCAL_MACHINE | CERT_STORE_OPEN_EXISTING_FLAG,
"MY" );
if( store ){
//if( !CertCloseStore( store , CERT_CLOSE_STORE_CHECK_FLAG ) ){
if( !CertCloseStore( store , CERT_CLOSE_STORE_FORCE_FLAG ) ){
if( GetLastError() == CRYPT_E_PENDING_CLOSE ){
printf( "!" );
else{
go = 0;
else{
go = 0;
Sleep( 10 );
return 0;
The callstack for allocations pretty much are all like this (this is from a 32 bit process on a 2008R2 box)
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
02e75af0 000f 0000 [00] 02e75b08 0005e - (busy)
7724dff2 ntdll!RtlAllocateHeap+0x00000274
745f6017 AcLayers!malloc+0x00000079
7460dc96 AcLayers!NS_VirtualRegistry::MakePath+0x00000056
7460e817 AcLayers!NS_VirtualRegistry::CVirtualRegistry::OpenKeyW+0x000000a9
7460f21a AcLayers!NS_VirtualRegistry::APIHook_RegOpenKeyExW+0x00000036
743d2641 AcGenral!NS_WRPMitigation::APIHook_RegOpenKeyExW+0x00000024
7527a246 crypt32!RegOpenHKCUKeyExU+0x00000055
7527de26 crypt32!OpenSubKeyEx+0x00000108
7527e4d8 crypt32!OpenSubKey+0x00000015
7527ed88 crypt32!OpenSystemRegPathKey+0x00000033
75281a2f crypt32!EnumPhysicalStore+0x00000162
75281d0e crypt32!I_CertDllOpenSystemStoreProvW+0x0000015c
752c9fce crypt32!I_CertDllOpenSystemStoreProvA+0x0000006c
7527e49a crypt32!CertOpenStore+0x0000010e
Anyone have any ideas of a hotfix available for this?
thanksMight ask them here about this.
Windows Desktop Dev forums on MSDN
Regards, Dave Patrick ....
Microsoft Certified Professional
Microsoft MVP [Windows]
Disclaimer: This posting is provided "AS IS" with no warranties or guarantees , and confers no rights. -
Memory Leak in ArrayList ?
Dear all,
When I went thru the implementation of ArrayList, it just appeared to me that there can be a memory leak in the ensureCapacity method, which allocated new memory... The code is as below.
*Increases the capacity of this <tt>ArrayList</tt> instance, if*
necessary, to ensure that it can hold at least the number of elements
*specified by the minimum capacity argument.*
*@param minCapacity the desired minimum capacity*
public void ensureCapacity(int minCapacity) {
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
*Object oldData[]* = elementData;
int newCapacity = (oldCapacity * 3)/2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}Dont we need to make null the reference of oldData, as oldData = null, so that gc can reclaim the memory used by the old elementData, soon after the array copy (Arrays.copyOf) ??
Please suggest if my understanding is wrong..
Thanks & Regards
JobyJOBY1985 wrote:
Dear all,
When I went thru the implementation of ArrayList, it just appeared to me that there can be a memory leak in the ensureCapacity method, which allocated new memory... The code is as below.
*Increases the capacity of this <tt>ArrayList</tt> instance, if*
necessary, to ensure that it can hold at least the number of elements
*specified by the minimum capacity argument.*
*@param minCapacity the desired minimum capacity*
public void ensureCapacity(int minCapacity) {
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity) {
*Object oldData[]* = elementData;
int newCapacity = (oldCapacity * 3)/2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}Dont we need to make null the reference of oldData, as oldData = null, so that gc can reclaim the memory used by the old elementData, soon after the array copy (Arrays.copyOf) ??No we don't need to set any thing to 'null'. The reference 'elementData' is update by the Arrays.copyOf() invocation and whatever it used to reference is then only referenced by oldData and when the block in which the reference 'oldData' is declared exits there will be no reference to the original array so it is eligible for GC.
>
Please suggest if my understanding is wrong..Your understanding is wrong.
>
Thanks & Regards
JobyEdited by: sabre150 on Oct 20, 2009 1:20 PM -
Memory leak in oracle.exe and mds.exe
We are facing Memory leak in oue MDM server. Our environment details
are as follows;
MDM 5.5 SP5 ( Build 5.5.41.70)
Oracle 10.2 patch 2
windows server 2003 SP1
XI 7.0 SP 9
If server is running continuously 3-4 days then Nonpaged memory is
getting exausted and server does not respond. Now we have to retart the
windows server manually.
If we see the task manager it is shows more than 200,000 handles for
oracle.exe and more than 100,000 handles for mds.exe.
1: Oracle.exe -- more than 200000 handles ( Approx >5000 is problem)
2: Mds.exe -- more than 100000 handles ( Approx >5000 is problem)
Since these applications are not releasing the handles properly so all
nonpaged memory gets exausted and server stops responding.
If we restart the mdm server, database and OracleserviceMDMD, then
nonpaged memory is released. But some times even if we restart these
services, we do not get nonpaged memory released. So we have to restart
the windows server.
please help me if anyone else have faced the same problem.
regards
SaurabhClosing as question is answered in MDM forum.
Maybe you are looking for
-
Hello! I have a big problem on a project that I'm developing. I've created an animation with ActionScript 2.0 using mx Tween class. This is the code: import mx.transitions.Tween; import mx.transitions.easing.*; var myTween:Tween = new Tween(mc1,
-
How to make the storage scalable
I have a program that puts the attached files in Drive c: making a new folder also gives user facility to search files. But as the number of files are increasing the Drive is going to be full. So how can I modify my program so that I can detect how m
-
Checking number of subscribers to a podcast
Hi all, How can I tell how many subscribers I have to my podcast ? I just published my first podcast using iWeb. Thanks BB G4 DP 2 x 1ghz Mac OS X (10.4.7)
-
How to find changes made to an Opportunity.
I need to identify (via an extract report) the date that the status was changed for a certain Opportunity type. I thought that if I could find a change log for the opportunity I might be able to identify this. I know this data probably isn't held in
-
Not Able to Connect to the Hyperion shared Services or any other components
Hi All, I am not able to login to Any of the Hyperion components, It was working fine until today afternoon. But now I get the following error EPMCSS-00387: Failed to authenticate user from user directory MSAD. Invalid password. EPMCSS-07047:Failed t