Tuesday 31 October 2017

Google Maps Android API v2 SupportMapFragment memory leak

Using 2 simple activities. First Activity which only holds
a button to start the 2nd Activity which holds the
map:




Main
Activity:



public class
MainActivity extends Activity {

@Override
protected void
onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);
}


public
void goToMap(View view){ //This is just the onClick method for the button

Intent intent=new Intent( this, BigMapTest.class);

startActivity(intent);
}


The
map activity:



public class
BigMapTest extends FragmentActivity {
SupportMapFragment
mapFragment;

GoogleMap
map;

@Override
protected void onCreate(Bundle arg0)
{
// TODO Auto-generated method stub

super.onCreate(arg0);


setContentView(R.layout.travel_diary_big_map);


mapFragment=(SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.big_map);


map=mapFragment.getMap();

}


The
XML Layout for the map
activity:



            xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>



android:id="@+id/big_map"
android:layout_width="fill_parent"

android:layout_height="fill_parent"

class="com.google.android.gms.maps.SupportMapFragment"

/>





Now
when I run this code, pressing the button to move to the Activity with the map, and
pressing back to get to the first activity...then repeating the process, I can see the
heap increasing in size each time, until it reaches it's limits and then it starts
clamping. If you mess around a bit more with map(i.e. zooming) I can get an OOM
Exception at this point.





01-25 16:10:13.931: D/dalvikvm(21578): GC_FOR_ALLOC freed 1898K, 7% free
45859K/49187K, paused 204ms
01-25 16:10:14.671: I/dalvikvm-heap(21578): Clamp
target GC heap from 52.724MB to 48.000MB
01-25 16:10:14.671:
D/dalvikvm(21578): GC_CONCURRENT freed 2534K, 6% free 46554K/49187K, paused
3ms+14ms
01-25 16:10:15.372: I/dalvikvm-heap(21578): Clamp target GC heap
from 52.979MB to 48.000MB
01-25 16:10:15.382: D/dalvikvm(21578):
GC_CONCURRENT freed 2273K, 5% free 46815K/49187K, paused 3ms+15ms
01-25
16:10:15.622: I/dalvikvm-heap(21578): Clamp target GC heap from 52.604MB to
48.000MB
01-25 16:10:15.622: D/dalvikvm(21578): GC_FOR_ALLOC freed 657K, 6%
free 46431K/49187K, paused 202ms
01-25 16:10:16.203: I/dalvikvm-heap(21578):
Clamp target GC heap from 52.959MB to 48.000MB
01-25 16:10:16.203:
D/dalvikvm(21578): GC_FOR_ALLOC freed 1469K, 5% free 46796K/49187K, paused 217ms />01-25 16:10:16.203: I/dalvikvm-heap(21578): Forcing collection of SoftReferences
for 278744-byte allocation
01-25 16:10:16.423: I/dalvikvm-heap(21578): Clamp
target GC heap from 52.952MB to 48.000MB
01-25 16:10:16.423:
D/dalvikvm(21578): GC_BEFORE_OOM freed 9K, 5% free 46786K/49187K, paused 219ms />01-25 16:10:16.423: E/dalvikvm-heap(21578): Out of memory on a 278744-byte
allocation. />




Any
suggestions/help would be appreciated.

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...