Android : Debugging Memory Leaking - Program
Mar 31, 2009
What would be the best way to debug a leaking program?
I have developed a media player (includes a background service doing the playing, and a UI, and I access getResources(), MediaStore and things like this often).
Whenever I rotate the screen or reenter the app the total memory allocated to my process grows some 70 to 100KB. After some 6-10 rotations it is dead due to an out of memory exception.
In the meantime I have removed every static modifier to global vars, added an onDestroy function that unregisters the intents and service connection (and even puts every global var to null again :P), but still the program memory grows... and dies after a few rotations.
Given the situation I even made the program stop right after just calling setContentView, and still the memory leaks:
CODE:......................
View 3 Replies
Dec 17, 2009
I have a ClassLoader in Activity's onCreate which loads a specific class from a library, and is working fine, except that when activity is destroyed, the memory resources about the loaded class are not released.If the same activity gets created multiple times very quickly (by launching it, and destroying it by pressing the Back button), and the process doesn't happen to be killed by Android yet, the memory usage of the corresponding process grows continuously until the app crashes,and process dies.The problem is that this happens even if no objects are instantiated using the loaded class. There seems a problem with garbage collector, which doesn't seem to release resources about the loaded class on Destroy even if there are no references to it.If android would have killed the process right away when the last activity of the process gets finished, there wouldn't be a problem, but this is managed by Android system, and it doesn't always kill the process right away. A workaround may be to kill the process explicitly on destroy, but this is not encouraged way to do, as Android is supposed to manage the process.
An alternative is to have a functionality that allows a class to be unloaded onDestroy, but this doesn't exist. By design, the garbage collector is supposed to take care of this.Is there a solution regarding this?
View 8 Replies
View Related
Dec 16, 2009
I'm trying to locate a memory leak in my app (it's client for a mediacenter). So I start it up, go to the screen that lists all movies, go back to my home activity, trigger the GC a few times manually via DDMS, dump the memory heap, pull it, convert it and load it into MIT in Eclipse.
Now the movie list screen is pretty heavy, around 800k of movie objects, which should be freed when I go back to the home screen. However, it stays allocated, with the GC root as a local variable in the main thread at ActivityThread.ContextCleanupInfo (see attached screenshot).
I've tried searching but there is no documentation on this class, not even in the source code. Is there any way to avoid this kind of behavior? Am I doing something wrong or is the problem in Android? My app is open source and can be checked out here[1]. http://code.google.com/p/android-xbmcremote/
View 4 Replies
View Related
Aug 7, 2009
http://developer.android.com/reference/android/app/Activity.html
The Activity Lifecycle could have implementation and or design bug: One case is to initialize a big image in onCreate(), try to reuse the image during the whole lifecycle, and then recycle the image in onDestroy(). Test showed that onCreate() is called every time one navigate away from the activity and back again, but onDestroy() is not called at all. This behavour causes memory leaking for the big image (size 960*1920). After 6+ times away and back to activity, the system runs out of memory and has to kill the process.
One workaround is to initialize the big image in onResume() and recycle in onPause(), but that's not so good reuse.
Could it be better to change the process (as shown in the diagram) a little bit such as: Call onDestroy() first when a process is killed?
View 3 Replies
View Related
Nov 18, 2010
I created a simple app with a ListView following the ListActivity examples I found on the net.
The app has 2 activities with the first having a button to create the second. When i hit the close button on the second activity I would like it to release its memory (or at least allow it to be garbage collected).
Currently it will never release.
I must be doing something wrong here because the MyListActivity never gets released. Can anyone tell me if I am doing something wrong with the way my activities are created/destroyed? or if my usage of the ListView is wrong?
My App as a zip - http://www.mediafire.com/?l26o5hz2bmbwk6j
Screen Shot of Eclipse MAT showing the list activity never releasing memory - www.mediafire.com/?qr6ga0k
View 1 Replies
View Related
Oct 23, 2009
can anyone tell me any solution or tool provided by Android to find the exact place of memory leaking?
View 2 Replies
View Related
May 7, 2010
I'm writing an app that has a foreground service, content provider, and a Activity front end that binds to the service and gets back a List of objects using AIDL. The service does work and updates a database.
If I leave the activity open for 4-8+ hours, and go to the "Running Services" section under settings on the phone (Nexus One) an unusually large amount of memory being used is shown (~42MB).
I figure there is a leak. When I check the heap memory i get Heap size:~18MB, ~2MB allocated, ~16MB free. Analyzing the hprof in Eclipse MAT seems fine, which leads me to theorize that memory is leaking on the stack. Is this even possible? If it is, what can I do to stop or investigate the leak? Is the reported memory usage on the "Running Services" section of android even correct (I assume it is)?
Another note: I have been unable to reproduce this issue when the UI is not up (with only the service running)
View 1 Replies
View Related
Sep 22, 2010
I used advance task killer and check frequently to see which programs are running in the background, frequently there are a number of programs I never use running in the background. How do I keep these programs from loading?
View 5 Replies
View Related
Jun 10, 2010
Has anyone found an app that tells how much memory each program is using? Trying to find out which background apps to stop from running. Also, the other day when i was on charger I had a popup tell me the what percentage of battery usage each program was using (It was saying I was using more power than usb supplied and the battery was going to die).
View 1 Replies
View Related
Mar 31, 2009
I definitely have a memory leak problem and i'm trying to figure out there. After 6-10 config changes i'm getting out of memory in regards to BitmapFactory. I'm kind of suspect that this is going on within adapter. I have a listview . ListItems are an thumbnail image ( ImageView ) and TextView for text.
Here is the getView code.
CODE:..................
And get ThumbnailBitmap() is basically BitmapFactory.decodeByteArray ..
Is it possible that i'm leaking drawables ? Heap is not increasing by the way .
View 3 Replies
View Related
Sep 28, 2010
I read the Avoiding Memory Leaks article with interest, and am concerned about danging references to the context object. I have a class like the following.
CODE:.........
Is it a problem to have a reference to a LayoutInflater object, since it must be using the context object somehow? Is there a better design pattern for what I'm trying to do here? (Use the context only to initially inflate the XML; from then on just use the View that's passed in to getView)
View 1 Replies
View Related
May 5, 2010
Anybody else thinking that the revs are being leaked deliberatly and they are using us to test them and find the bugs?
View 22 Replies
View Related
Jul 7, 2010
I finally decided to do it. I had an idea to use the corner of a sheet of paper dabbed in krazy glue to slide up and down the sides and bottom of my phone while holding the screen down for a while. Surprised, it worked like a champ, and any excess glue that got anywhere on the phone was easily removed with acetone. Unless you have very sturdy hands, I would not advise this.
View 5 Replies
View Related
Nov 19, 2009
The bottom four buttons on my droid leak light if I look at it certain angle...
View 5 Replies
View Related
Nov 13, 2009
I just picked up a Droid today, and I just seen, above the 4 touch buttons when they are lit up, if you tilt the phone down you can see light leaking up to the edge of the screen. Does anyone else have this problem or should I return my device?
View 36 Replies
View Related
Nov 9, 2010
I'm writing a small program, it can show and manager all files and folder in the android mobile. Now I get a problem need to help, when I click to a file icon, example a audio, i want the audio player can run and play it.
View 2 Replies
View Related
Dec 2, 2009
How to tell the installer intent to install on memory card or on phone memory ?
View 2 Replies
View Related
Jan 21, 2010
My application is designed to support both portrait and landscape orientations. Using my HTC IO device, it survives 12 orientation changes before throwing an out of memory exception while inflating my activity.When I follow the recommended procedure of using DDMS to first force a GC and then write a heap dump, and then load it into the Eclipse Memory Analyzer, there is only one retained instance of my application, as there should be. None of the other retained objects are obvious offenders. Just for yuks, I reran the test, and did everything the same way except I didn't force a GC. In this case I see 13 instances of my application, which is more consistent with throwing an OOM exception. Is this telling me something useful? If forcing a GC with DDMS reclaims the memory used by now-defunct instances of my activity, I would have thought the VM would have garbage collected some, if not all of these defunct activities automatically. Do I need to request GC at the very beginning of my activity lifecycle to make sure?
View 7 Replies
View Related
Apr 15, 2009
I have a background service which sometimes does not work properly. I need a logfile which displays me information so that i am able to find the error.But when i use Log.d() then ddms shows me only a few hours of the logfile. Is there a way to expand this? Or is there a more suitable way for my problem?
View 2 Replies
View Related
Nov 14, 2009
I have just got myself a new HTC Tattoo which is NOT carrier locked. Now I'm unable to find out how to use that to debug my application. Is is possible to do that on an "unlocked" HTC Tattoo? If so, can someone point me to some resource outlining how to do that?
View 3 Replies
View Related
Sep 20, 2010
I've got a Nexus One running a debug version of my application, and I just today downloaded and installed the 0.9.8 version of the SDK tools, and I swear that Debugging latency has increased incredibly. I never bothered to measure the overhead before the upgrade because I always found the phone's debugging overhead to be small enough to not affect matter. Well, now I have AI code which runs at ~10 MS standalone taking 300-400MS through debugging. A 40X performance loss is not something to cough at. Is it just me not seeing the performance loss previously, or has something broken?
View 2 Replies
View Related
Jul 14, 2010
I am not sure how is this possible?But we would like to debug the apk files without having the source code (source code lies with developers).But if something breaks I would like to report it to the developers. We would like to report the crash logs and the normal info about the app.
View 3 Replies
View Related
Feb 20, 2009
I can debug the Android Java code using eclipse and using the Remote Java Application debug configuration. This does not step into C/C++ code however as expected. I understand I have to attach the gdbserver to do this. Can someone provide a step by step tutorial on how to debug the native code of Android?Is there a eclipse plugin that makes this easier?
View 3 Replies
View Related
May 18, 2010
I have an app which, for the last 12 hours or so, I can't NOT launch in debug mode on my handset. No matter what I do, it shows the "Process ... is waiting for the debugger to attach" dialog, and the process appears with the little green bug icon in DDMS. Never seen anything like it.Here's what I've tried: - Using the "Run" command, not "Debug", from Eclipse (duh) - Rebooting all hardware - Doing a clean install on the handset - Setting android:debuggable="false" in the manifest.That last one's freaking me out. If I can't turn off debugging for a production build, I can't distribute the app. And it's currently my top earner in the Market.Anybody got any ideas? About the only other thing I can think to try is a clean reinstall of Eclipse and the SDK, but that's enough of a PITA that I'm hoping I don't need to go that route.
View 5 Replies
View Related
May 4, 2009
I am able to see the logs generated from java program (using Log class or System.out.println) using adb logcat.Can anyone tell me how to see the printf/cout statements in C++ application for android.
View 2 Replies
View Related
Jan 29, 2010
I know that, to be able to sign a package with your own keystore, you have to use the export from eclipse. However, its not easy to keep doing this when you're still debugging the application. Since i have external libraries that uses another keystore and use the shareUserId, it would be reasonable to let, in eclipse plugin, you debug an application using any keystore.Any tips of how to make debugging easy with a private keystore?
View 4 Replies
View Related
Dec 24, 2009
I have tried to debug in my device (HTC Hero) that has android 1.5 (I think, and even I don't know how to update) and well.I have right checked the debugging option on the mobile adjustments of apps. So when I click on run, it goes fine but when I click on debug (all of this in eclipse) it does the same actions that it does in the run option. So I cant see it step by step.
View 8 Replies
View Related
Oct 16, 2010
I've turned on USB debugging.I have the latest HTC Sync and android SDK components.I'm using Eclipse 3.5 on windows XP. I'm running Android 2.2, and am asking for 2.1 as the minimum in the debugger.I work in Eclipse/Java just about every day, and have for several years.I'm even writing an Eclipse plugin at work as I type this neither Eclipse nor Java are new to me by quite a stretch.When I start a debug session for the "Skeleton App" sample project, I can see my Evo, and the activity launches (with any freshly saved changes), should I select it.I have tried different android connection types (charge only, disk drive, HTC Sync, and USB tethering) to no avail. I've tried Eclipse 3.6 for a bit before yielding to the inevitable and reinstalling 3.5. I monkeyed with the emulator for a while but ran into a different set of issues (I had to reboot the emulator every time I wanted to make a change... Eclipse's auto-build/hot-swap has me spoiled).Is there something I can add to (or remove from) the AndroidManifest.XML to deal with this? A magical incantation perhaps? Must I pray towards San Jose three times a day on a rug woven from kernel gurus' vast and scruffy beards? Is my Evo not Kosher? Must I be "sky clad" while debugging? Shall I teach my laptop to genuflect?
View 3 Replies
View Related
Oct 27, 2010
I want to run and debug my Android apps on my HTC Incredible.Connect your Android-powered device to your computer's USB port. Windows will detect the device and launch the Hardware Update Wizard".But it doesn't.When I connect my phone it's visible as a drive letter and its SD card is visible as a second drive letter and I can transfer files.But Hardware Update Wizard doesn't launch. Nor is it already connected if I go to my SDK tools directory and do "adb devices" it returns blank.So what do I have to do to debug on my phone?
View 2 Replies
View Related
Nov 29, 2009
When I run my app on my phone from eclipse, it always runs in debug. This has only recently started to happen. I guess I must have inadvertently changed a preference or something, but can't work out what. Does anyone know how I can switch it back so I can run without debugging?
View 2 Replies
View Related