Android :: Memory Leak - Heap Size

Aug 10, 2009

I know that's a subject which was discuss a lot of time and I try to find a solution since more than 6 day for the memory leak which appears in my application.

I've read this page: http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-andr...

So, I don't use static member fields, I always use recycle() and I don't use inner class.

My application use a gallery and some bitmap. I use finalize to monitor garbage collection in each class of my application: protected void finalize() throws Throwable {try {Log.d("FINALIZE", this.toString());} finally {super.finalize();}

Android :: Memory leak - heap size


Android :: Debug Memory Leak Where Exception Instances In Heap Dump Have No Inbound References?

Sep 2, 2010

I've been trying to diagnose a memory leak in an Android application I'm writing. I got a heap dump loaded into Eclipse, but the results I'm seeing are very curious. There are some 20,000 instances of an exception (specifically, LDAPException from the UnboundID LDAP library) in the heap with no inbound references.

That is, they show up at the root of the dominator tree. The OQL SELECT objects e FROM com.unboundid.ldap.sdk.LDAPException e WHERE (inbounds(e).length = 0) returns over 20,000 results, totalling to nearly all of the heap. And yet, the GC runs before the heap dump and I can see that it's running in the console, repeatedly, during the execution of the leaky code. If these instances have no inbound refs, what could be keeping them alive?

I also tried doing a "shortest paths to GC" query. It shows one LDAPConnectionReader row retaining 2 instances, and ~20k LDAPException @ <addr> unknown rows with various hex addresses.

Update: I haven't had time to further diagnose this since posting it, and the bounty I posted is ending before I likely will. I'm awarding it as best I can now, lest the points go to waste. Thanks to everyone who looked into this! I will come back later and update again with the results of further diagnosis, when life is a little less hectic.

View 3 Replies View Related

Android :: Application Max Heap Size

Oct 27, 2009

I noticed when you create an AVD now that you can set an application max heap size. I found that when I did WVGA800 it was set to 24. So it looks like it's more than the 16 we are used to.

I there an API method to get the value of this max heap size? I haven't looked into that yet.

View 4 Replies View Related

Android :: Programmatically Get Maximum Heap Size

Oct 15, 2009

I have an app which does a bunch of image manipulations, and those images are ideally full-screen sized. It works on a G1 (or HVGA emulator), but runs out of memory on a WVGA emulator instance, because full-screen images use twice as many pixels. Fine, I can work around it by manipulating smaller images, then scaling up to WVGA at the end. There's some loss of image quality, but this is unavoidable on a WVGA device with a 16MB heap limit, so I'll live with that.

When a real WVGA device hits the streets in the next couple of months, though, it's likely to have more than 16MB heap per app, for just this kind of reason. So for best image quality, I'd like my app to adapt to this situation, and use full-screen-sized images on such a device. IOW, I'd like to implement a heuristic which sets the image size based on heap size.

In order to do so, however, the app needs to know what the maximum heap size is, and I haven't yet found an SDK call which will return this information. The various Debug.get* memory calls all seem to be to do with how much heap you have *allocated*, not how much you theoretically *can* allocate. I understand that this isn't necessarily a hard number, that issues like fragmentation and GC mean that you may not actually be able to allocate every last byte, but a theoretical number would still be useful.

Can anyone point me to an SDK call I've missed?

View 4 Replies View Related

Android :: Set Minimum Heap Size For Each Application

Mar 3, 2010

I could set minimum heap size in the source code like below.

--> VMRuntime.getRuntime().setMinimumHeapSize(INITIAL_HEAP_SIZE);

But I want to set this value in android.mk or androidmanifest.xml.

View 7 Replies View Related

Android :: Increase Vm Heap Size In Phone

Sep 29, 2010

I am developing an application in android..but i got an issue of getting an error..that is out of memory exception while i am converting my file contents to byte array..i think this is the problem of reduced heap size..can u plz tell me how can i increase the vm heap size..i am using eclipse...

View 1 Replies View Related

Android :: Detect Application Heap Size

Apr 13, 2010

How do you programmatically detect the application heap size available to an Android app?

I heard there's a function that does this in later versions of the SDK. In any case, I'm looking for solution that works for 1.5 and upwards.

View 3 Replies View Related

Android :: Objective Of Setting The Minimum Heap Size In An App

Oct 5, 2009

In google's Calendar app for Android OS, you will encounter this line in the onCreate method of CalendarActivity.

// Eliminate extra GCs during startup by setting the initial heap size to 4MB.
VMRuntime.getRuntime().setMinimumHeapSize(INITIAL_HEAP_SIZE)

Can someone explain why setting it to 4MB will eliminate GCs ? Thanks

View 1 Replies View Related

HTC Incredible :: Vm Heap Size

Aug 4, 2010

What exactly is this? What benefit do you get by changing it?

View 3 Replies View Related

HTC Incredible :: VM Heap Size 24m Vs 32m - 2.2

Jul 31, 2010

Anyone know (with our phones running 2.2) what the optimal heap size should be? The leaked 2.2 came with 24m preset. Some ROMs run 32m. Bigger always seems better, but I've been reading other sites/forums and get conflicting thoughts.

That's why I thought I'd ask here.

I ran Linpack with both and average about 37.5 - 37.9 with either 24m or 32m.

View 3 Replies View Related

Android :: Limit Of Memory Heap Only 6M?

Jun 30, 2009

07-01 11:32:02.192: VERBOSE/QualcommCameraHardware(35): state transition QCS_WAITING_JPEG --> QCS_IDLE 07-01 11:32:02.232: ERROR/dalvikvm-heap(395): 6291456-byte external allocation too large for this process. 07-01 11:32:02.232: ERROR/(395): VM won't let us allocate 6291456 bytes 07-01 11:32:02.242: DEBUG/AndroidRuntime(395): Shutting down VM 07-01 11:32:02.242: WARN/dalvikvm(395): threadid=3: thread exiting with uncaught exception (group=0x4000fe70) 07-01 11:32:02.242: ERROR/AndroidRuntime(395): Uncaught handler: thread main exiting due to uncaught exception 07-01 11:32:02.302: ERROR/AndroidRuntime(395): java.lang.OutOfMemoryError: bitmap size exceeds VM budget My app shut down when i load a jpg file,i can avoid it by call system.gc().But I think memory limit will be 14M or 16M.

View 24 Replies View Related

Android :: Why Application Has Less Heap Memory Than Others?

Nov 18, 2010

My question may look naive but I do not know how to formulate it more correctly. The problem is that I create and use large simple type arrays in my application.

And I get errors like: ERROR/dalvikvm-heap(1763): Out of memory on a 7907344-byte allocation.

Yes, it's big enough but task management tools claim that my application is using only 30MB of memory, while other at the same time use 50MB and even 110MB (have seen once) and there is still 190MB of free memory in the system (not system applications, just other ordinary applications I have installed). If all applications are provided with the same heap size at startup how can they grow so big?

View 1 Replies View Related

Android :: Memory Management Outside Heap

Jan 15, 2010

I am working on an application for android and we since we have lots of graphics, we use a lot of memory.

I monitor the memory heap size and its about 3-4 Mb , and peeks of 5Mb when I do something that requires more memory (and then goes back to 3). This is not a big deal, but some other stuff is handled outside the heap memory, like loading of drawables.

For example if I run the ddms tool outside eclipse, and go to sysinfo, I see that my app is taking 20Mb on the Droid and 12 on the G1, but heap size are the same in both, because data is the same but images are different.

So the questions are: How do I know what is taking the memory outside the heap memory? What other stuff takes memory outside the heap memory? Complex layouts (big tree) ? Animations?

View 2 Replies View Related

Android :: Reduce Heap Size To Get Space For BitmapFactory.decodeFile

Nov 16, 2010

I learned from several discussions of this group that BitmapFactory.decodeFile() allocates heap memory outside of the "java heap". My app receives encrypted files from a remote server. Decoding those files needs a lot of heap space. After finishing this decoding step most of the allocated heap space will be freed by the GC. But the (total) heap size - as displayed by the DDM - remains large. In this situation there is not enough heap space outside of the "Java heap" to decode even medium sized image files using BitmapFactory.decodeFile(). At the moment I limit the size of encrypted files to ensure that the Java heap space never increases to more than 10 MB. This ensures that there is enough memory for BitmapFactory.decodeFile(). But this is not very elegant.

Is it possible to tell the dalvik-vm to reduce the (total) heap size to have more space for decoding images or is there another solution?

View 6 Replies View Related

Android : Looking At Heap Bitmap Memory Per Session?

Feb 26, 2009

Ok I am at the end of my rope. I am doing some image processing. I have a large image file which I open and create a smaller bitmap from. At the end of processing I call recycle on everything. I null everything. I run GC manually.

I then try edit another image and I get an out of VM memory error. Bitmap exceeds etc etc.

I am looking at the heap and the secone edit doesn't seem to cause it to increase at all.

What else can I do. Surely google cannot possibly be suggesting that we can open one large bitmap per session and thats it?

View 16 Replies View Related

Android :: Out Of Memory On Bitmap But There Is Free Heap Space

Aug 10, 2010

I have a list view that display about 25 images with size 60x60 pixels. I dowload this images from internet and I store in an arraylist as Bitmap. I need to save it in a arraylist because a listview will recycle views and so I need, wenn the user scroll, to display the image in the new view WITHOUT downloading again from internet

But after some time I got

java.lang.OutOfMemoryError: bitmap size exceeds VM budget

It seams that I got this exception about after loading 20 images ...

Reading in forum I have read about memory heap.

I try to check the memory heap usage with: Debug.getNativeHeapAllocatedSize and Debug.getNativeHeapSize()

When the exception occours both are about 4M.

But android has more than 4M?

When the application start the values are a little less to 4M so it seams is not a big memory usage or memory leak.

To be sure I want to call : ActivityManager.getMemoryClass() but this method is and instance method and I can't find the object to invoke!

But this method say, that al min should an application have 16M!

Any help? I have seen many topics in google ... but all speak about recycle. But if I recycle a bitmat ... then should I download again from internet?

Should I store the image on flash memory or sd card instead an arraylist in memory?

View 6 Replies View Related

Android :: Get Total App Memory - Heap - External Allocations

Jul 7, 2010

In my android app, is there any way to get the total amount of memory my application is taking up, in the code. I'm using lots of large bitmaps, so it must include external allocations as well. I must, however, be able to get the number in the code, so that I can dynamically adjust to fit the budget I have.

I also need a way to get the total amount I have available (16Mb or 24Mb) as well.

View 1 Replies View Related

Android :: Custom Heap Size In Android Platform

Jul 23, 2010

The software team in our graduation project asked for increasing the heap size per process in Android. They said that the default is "16MB" which isn't sufficient for them.

How could I custom the size?

I found a commented line in the file: /acme/my_board/BoardConfig.mk in my android source code:

# USE_CUSTOM_RUNTIME_HEAP_MAX := "64M"

View 2 Replies View Related

Android :: Memory Leak In AudioTrack?

Jun 27, 2009

If I create and release multiple AudioTrack objects, the GREF count continually increases which eventually causes an application crash. Even with a forced garbage collection, I end up with the same high GREF count at the end of the loop.In my application, I continuously create AudioTracks from variable lenght buffers.I guess I can try and use a fixed size pool of AudioTracks each with a buffer large enough to fit my longest sound, and try and reuse them.Is there a better/correct way to completely clear resources used by an AudioTrack?

View 5 Replies View Related

Android :: Memory Leak In Map Overlay

Jan 10, 2010

I have been banging away at this one for weeks and I feel like I have exhausted my research capabilities. I am hoping that someone will see my error in the code posted below. The code is completely functional doing everything I need, but there is a major memory leak. When I try to track memory in the DDMS, the VM Heap tells me that my object count is relatively stable and the used memory is also relatively stable (it comes back down to a similar value after each GC after panning).

When I look at the memory pie chart, the free memory loses over 1meg of capacity with each map pan (overlay reload) and the Unknown memory grows. I have not found anything with the allocation tracker. Functional Summary: I load overlays onto a map based on data I get from polling my server. When I pan the map far enough I clear the overlays and load new ones.
MapFrontEnd.java (snippets): //header info private List<Overlay> overlays;
//in onCreate overlays = mapView.getOverlays();
// here I attempt to fully clean up my old Overlays for (Overlay i : overlays) {
if (i instanceof ParcelOverlay) ((ParcelOverlay) i).cleanUp(); }

View 4 Replies View Related

Android :: Memory Usage - Leak?

Dec 4, 2009

In my app, I'm fetching data via HTTP and use the response string to create an ArrayList of objects. So what I'm doing once I get the response is:

String[] fields = response.split("<field>");
and use the field[] values like this:
ArrayList<Movie> movies = new ArrayList<Movie>(); for (int row = 1; row < fields.length; row += 9) { movies.add(new Movie(fields[row], fields[row + 1], ..., fields[row + 8]);
}

View 5 Replies View Related

Android :: Memory Leak Using ListActivity

Oct 14, 2010

I have an application that uses a Service and some list activities. When the activities are opened, I can see the heap usage increase in DDMS. When the activities are closed, the heap usage decreases slightly. The service is still running in the background at this point. If the activity is started again by re-running the application and then closed, the heap usage increases again then decreases, but never returns to the original level before the activity was first opened. If it repeatedly (10-15 times) open the activity then close the activity, the heap size (both MB and # Objects) balloons!

I'd expect ListActivity's onDestroy to take care of itself when it gets destroyed. What am I missing with this? Am I using ListActivity incorrectly?

If I examine the heap using MAT, I see 10-15 ListView objects. Unfortunately, I've not got much experience with MAT, but I think it means that the instances are still hanging around rather than being garbage collected. Can anyone explain what's going on?

A test app similar to my real code is below. Create a new android application, add this to the manifest:

CODE:................

View 3 Replies View Related

Android :: Memory / Resource Leak With Application

Nov 24, 2009

I am experiencing a memory / resource leak on a T-Mobile G1 device with my application. I installed the "Task Manager" application from Android market and my memory usage is not monotonically increasing. It stays relatively flat over time. Furthermore, none of the other processes are chewing up tons of memory either (really, I can get into this state with just my app running). I am not experiencing this problem on any of the other Android phones (including Eris, Hero, and Droid).

The interesting thing is that if I kill my application, the phone is *still* very slow and sluggish. The only thing that seems to be able to get me out of this situation is a battery pull. If I run my application for about 3 hours, the phone starts to become very sluggish. Even simple operations like hitting the "home" button take many seconds. I'm not sure what to do at this point and am wondering where I can go from here.

View 3 Replies View Related

Android :: Memory Leak In Activity - Reclaiming

Sep 24, 2009

In my app activity A creates activity B, however when the back key is pressed it goes back to activity A. This is a simplified version of my application. I would expect memory to be reclaimed when going back to Activity A. Going to activity B allocates more memory. I am using dumpsys meminfo to get the allocated kbs. How can I easily tell what memory is creeping? I do not keep any references to activity B. I know about the ddms allocation tracker, but wondering if there is a more better tool to figure this out.

View 2 Replies View Related

Android :: String Builder And Memory Leak

Jan 6, 2010

I'm parsing a document with large text field. In my characters section I am using StringBuilder
currentStory.append(ch, start, length);
then in my endElement i'm assigning it to the appropriate field on my object.
if (name.equals(tagDesc)) { inDesc = false;
if (currentItem != null ) { currentItem.setSummaryText(currentStory.toString());
} currentStory.setLength(0);
} setSummary is public void setSummaryText(String text) { Story = text;
}

And I am running out of memory. If I change setSummaryText to something completely weird like this:
public void setSummaryText(String text) { char[] local = text.toString(
) Story = new String(local);
}

I am fine. I just cant figure out where I am holding that reference?
Story is a member var of this object initialized with "";
Note - assigning to local String variable instead of char[] - fails as well.

View 1 Replies View Related

Android :: Memory Leak - New Array List String

Oct 6, 2010

After several hours of searching for the cause of a Out Of Memory Error, I found a wierd problem with Strings. To keep it simple, trimmed it down to something like this:

ArrayList<String> someStringList = new ArrayList<String>(1000);
for (int i=0; i<1000; i++) {
String someBigString = new String(new char[100000]);
String someSmallString = someBigString.substring(0,1);
someStringList.add(someSmallString);
}

View 16 Replies View Related

Android :: Phone State Listener Memory Leak

Sep 8, 2009

There appears to be a leak when using PhoneStateListeners. The following code simply reigsters in onResume and unregisters in onPause a PhoneStateListener. Repeatedly launch then press BACK (so the app is finished & onDestory is called before the next launch) and the number of activities reported by meminfo will equal the number of launches. For instance, here is the output I get after launching (and finishing) 11 times in sequence:

dumpsys meminfo com.example.leak Currently running services: meminfo
DUMP OF SERVICE meminfo: Applications Memory Usage (kB): Uptime: 12204322 Realtime: 12204322

** MEMINFO in pid 1358 [com.example.leak] ** native dalvik other total size:
2648 3079 N/A 5727
allocated: 2604 2254 N/A 4858
free: 43 825 N/A 868
(Pss): 913 1305 1475 3693
(shared dirty): 1080 3864 568 5512
(priv dirty): 808 936 1056 2800

Objects Views: 77
ViewRoots: AppContexts: 12
Activities: 11
Assets: 2
AssetManagers: 2
Local Binders: 36
Proxy Binders: 21
Death Recipients: 0
OpenSSL Sockets: 0
SQL heap: 0
dbFiles: 0
numPagers: 0
inactivePageKB: 0
activePageKB: 0 #

Without the PhoneStateListener, the number of activities is always 1 no matter how many times the app is launched & finished. So, am I doing anything wrong here? Or is this a bug in the TelephonyManager?

Here's the code package com.example.leak;

import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log;
public class LeakExample extends Activity {
private class MyPhoneStateListener extends PhoneStateListener {
@Override public void onCallStateChanged(int state, String incomingNumber) {
if ((state == TelephonyManager.CALL_STATE_RINGING)
|| (state == TelephonyManager.CALL_STATE_OFFHOOK)) {
LeakExample.this.finish();
} } }
MyPhoneStateListener phone_listener = new MyPhoneStateListener();
TelephonyManager telMgr ;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
telMgr = (TelephonyManager) getSystemService (Context.TELEPHONY_SERVICE);
} @Override protected void onPause() { super.onPause();
telMgr.listen(phone_listener, PhoneStateListener.LISTEN_NONE);
} @Override protected void onResume() { super.onResume();
telMgr.listen(phone_listener, PhoneStateListener.LISTEN_CALL_STATE);
} @Override protected void onDestroy() { super.onDestroy();
Log.v("LEAK EXAMPLE", "onDestory");
}

View 3 Replies View Related

Android :: Simple Frame Animation - Memory Leak Activity

Apr 14, 2010

I am using a simple frame animation and when I exit and reenter my activity the activity is still referenced in memory.

//This is a sample activity I created to simulate the problem public class MemoryLeakActivity extends Activity {
@Override public void onCreate(final Bundle savedInstanceState) super.onCreate(savedInstanceState);
} @Override public boolean onKeyDown(final int keyCode, final KeyEvent event) {
final Intent i = new Intent(MemoryLeakActivity.this, LeakyActivy.class);
startActivity(i); return super.onKeyDown(keyCode, event);
} }

View 3 Replies View Related

Android :: Memory Leak - Service Stays Running In Background

Oct 15, 2009

I start a Service from an Activity, the user presses back, the Activity goes away and the Service stays running in the background. However the activity (and it's views) still stay in memory. I tested this with cupcake and G1. To reproduce I've made a simple program.

The activity:
package com.android.service_test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class StartService extends Activity {
/** Called when the activity is first created. */
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startService(new Intent(getApplication(), RunningService.class));
} }

View 20 Replies View Related

Sprint HTC Hero :: How To Indicate Memory Leak?

Oct 20, 2009

I use advanced task killer to keep things under control, and handcent in favor of the stock msg app. I notice that I have upwards of 80mb free memory after killing tasks after a reboot. Over the course of the day, with only my ignored apps running, that number shrinks to 48-50mb. Does that indicate a leak somewhere?

View 6 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved