私は仕事をするためにメモリ集中型のプログラムを手に入れようとしていて、メモリエラーに陥っていました。私は他のスレッドを読んだことがあります。それらはすべてメモリリークについて語りますが、私はそれがここに当てはまるとは思わないのです。Android OutOfMemoryでもメモリをスペアにする
1メガバイトの領域を割り当て、メモリ使用量をメガバイト(maxmem、totalmem、freemem)で表示するボタンを作成しました。最初は(40,5,2)、ボタン(40,6,2)を押します。私はボタンを押し続け、(40、7、2)、(40、8、2)、(40,9,2)、そしてOutOfMemoryを得る。私は(40、10、2)を期待して、OutOfMemoryを私が(40,40、0)のヒットまで得るべきではないでしょうか?
int[][] hi = new int[100][];
int i = 0;
public void save(View view) {
hi[i] = new int[256*1024];
i++;
TextView tv1 = (TextView) findViewById(R.id.seekBar1Text);
System.gc();
tv1.setText("Memory is max " + Runtime.getRuntime().maxMemory()/1024/1024 + " total " + Runtime.getRuntime().totalMemory()/1024/1024 + " free " + Runtime.getRuntime().freeMemory()/1024/1024);
}
CommonsWareは、Androidのメモリ測定で正しいかもしれません。私のアプリにこのボタンが表示される直前に、ビットマップARGBフォーマットに写真を読み込みます。これは約20MBのメモリを必要としますが、このメモリは「総メモリ」よりも大きいです。ビットマップは数えられませんでしたが、まだスペースを取っていたと思います。この写真を読み込まないと、40MBのうち約38MBまで、さらに多くのメモリを割り当てることができました。 –