2011-06-29 12 views
0

サブアクティビティの終了後もメモリサイズが減少しないのはなぜですか?android:サブアクティビティの終了後もメモリサイズが減少していないのはなぜですか?

私は2つのアクティビティがありますfirst_activityとsecond_activity

first_activityでボタンがあります。

メモリ使用量である:3メガバイト

int usedMemory= (int)(Debug.getNativeHeapAllocatedSize()/1048576L); 

私は、このボタンをクリックすると、第2の活動を開始します。

Intent intent = new Intent(getBaseContext(),second_activity.class); 
startActivityForResult(intent, 1); 

は、今までメモリ使用量:3 MBの二次活性で

、IはViewFlipperを通して8枚の画像を表示しています。

次に、メモリ使用量が17 MBに増加しました。 バックキーを押すと、second_activityが終了します。

 @Override 
    public void onBackPressed() 
    { 
     setResult(1); 
     finish(); 
     System.gc(); 
     super.onBackPressed(); 
    } 

second_activityからfirst_activityに戻ってくると、そのメモリ使用量は再び17 MBとして表示されます。なぜsecond_activityのメモリを解放していないのですか?

もう一度second_activityに移動しようとすると、アプリケーションはOutOfMemoryErrorのために強制終了します。

私の質問が愚かなものかどうかはわかりませんが、私はこの問題に直面しており解決できません。

答えて

0

JavaとAndroid OSがメモリをどのように処理しているかと関係していると思います。 C言語(と同様のクラス開発言語)とは異なり、Java言語(およびそれに依存するAndroid OS)は独自のゴミ処理を行います。

、それは非常に複雑な(そしてまだOSによって決定)だとして、私は、コード内でそれに依存しません

あなたはここで多くを読むことができますhttp://chaoticjava.com/posts/how-does-garbage-collection-work/

0

GCを強制的に呼び出すことはできません。メモリを解放するには、ビューをリサイクルする必要があります。

関連する問題