2012-04-04 20 views
0

をプログラム的にに割り当てる方法はありますか(ダイルビックが割り振って、何らかの配列を埋め込むようにします)チェックすると、Dalvikはどのくらいのメモリを割り当ててからOutOfMemoryErrorを表示しますか?それはJavaでそれを行うことは可能ですか?Dalvikのメモリ割り当て

+0

これを見てください:http://stackoverflow.com/questions/2630158/detect-application-heap-size-in-android はそれが役に立てば幸い... –

+0

おかげで、私が知っている、そこにあります1行の解決策ですが、私はそれを手動で検証する必要があります。だから、私はプログラム的に解決策を求めています。 – Waypoint

答えて

5

すべてのJavaアプリケーションは、実行時にメモリを割り当てます。これは、我々はまた、

java -Xms<initial heap size> -Xmx<maximum heap size>. 

を使用してやっていることである、Throwableのブロックでは、次の方法で行うことができます。

  1. 総メモリ(ヒープ) - Runtime.getRuntime()totalMemory();。
  2. System.out.println( "使用済みメモリ:"
    +(runtime.totalMemory() - Runtime.runtime.freeMemory())/ mb);
  3. System.out.println( "空きメモリ:"
    + Runtime.runtime.freeMemory()/ mb);
  4. System.out.println( "合計メモリ:" + runtime.totalMemory()/ mb);

多分この問題が解決されます。

+0

ありがとう、これはうまくいくようですが、問題はフィールド割り当てです。私は大きな値を設定すると、実際の割り当てられたメモリを決定するために文字列配列を使用しています、私のプログラムがクラッシュします。あなたは暗黙のサイズ宣言を必要とせずに動的な文字列配列を作成する方法を知っていますか? – Waypoint

+0

Javaでは、arraylistを作成することができ、次のように配列に変換することができます:List al = new ArrayList (); al.add( "あなたの文字列"); al.toArray(new String [al.size()]);.しかし、この状況でも、メモリが制約条件であると、メモリがクラッシュします。 – UVM