我有一个空的活动。这个活动有一个简单的问候世界。在eclipse中使用New | Android应用程序创建。 我观察到的是,如果我转储此应用程序的dalvik私有内存,每次重新加载活动(方向更改)时,我都会看到dalvik私有内存的增加。以下是日志。这是正确的观察吗?请让我知道
06-06 15:38:38.139: D/hworld(5477): DalvikPM1956
06-06 15:38:41.599: D/hworld(5477): DalvikPM2120
06-06 15:38:43.989: D/hworld(5477): DalvikPM2240
06-06 15:38:45.959: D/hworld(5477): DalvikPM2364
06-06 15:38:47.769: D/hworld(5477): DalvikPM2488
06-06 15:38:49.999: D/hworld(5477): DalvikPM2612
06-06 15:38:51.989: D/hworld(5477): DalvikPM2736
06-06 15:38:54.019: D/hworld(5477): DalvikPM2852
06-06 15:38:55.789: D/hworld(5477): DalvikPM2976
06-06 15:38:57.779: D/hworld(5477): DalvikPM3088
06-06 15:39:04.389: D/hworld(5477): DalvikPM3236
06-06 15:39:09.389: D/hworld(5477): DalvikPM3364
06-06 15:39:10.389: D/hworld(5477): DalvikPM3484
06-06 15:39:11.789: D/hworld(5477): DalvikPM3604
代码
package com.ahw.android_hello_world;
import java.util.Iterator;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
protected Iterator i;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Context context = getApplicationContext();
ActivityManager manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> list= manager.getRunningAppProcesses();
for(i = list.iterator(); i.hasNext(); )
{
RunningAppProcessInfo p = (RunningAppProcessInfo)i.next();
if(p.processName.compareTo("com.ahw.android_hello_world")==0){
int[] pids = new int[1];
pids[0] = p.pid;
ActivityManager activityManager = (ActivityManager)
getSystemService(Context.ACTIVITY_SERVICE);
android.os.Debug.MemoryInfo[] MI = activityManager.getProcessMemoryInfo(pids);
Log.d("hworld","DalvikPM" + MI[0].dalvikPrivateDirty);
break;
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
更新:::: 有点好奇,看看高级任务管理器我的应用程序内存使用情况,令人震惊的6.8MB,只需更改方向就达到了8mb甚至更多。 究竟什么是hello world需要8mb?在移动设备上?
答案 0 :(得分:0)
如果您更改设备的方向,则会再次重新加载活动,以便调用 onCreate 方法。其他的precesses没有被释放所以每次调用onCreate时,都会执行一个新的进程,这样就可以增加内存。