为什么Android执行完后不检索widgets的内存使用情况?
Why doesn't Android retrieve the memory usage of widgets after finishing executing?
为什么Android执行完成后不检索小部件的内存使用情况?
这是截图:
上图显示了我与对话框的交互。
public class MainActivity extends AppCompatActivity {
Dialog builder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
builder = new Dialog(this);
RelativeLayout myrl = new RelativeLayout(this);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams lp3 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
TextView textview = new TextView(this);
textview.setText("Dynamically Coded");
textview.setId(View.generateViewId());
textview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
builder.dismiss();
}
});
NumberPicker numpick = new NumberPicker(this);
numpick.setId(View.generateViewId());
EditText edit = new EditText(this);
lp2.addRule(RelativeLayout.BELOW, textview.getId());
lp3.addRule(RelativeLayout.BELOW, numpick.getId());
myrl.addView(textview, lp);
myrl.addView(numpick, lp2);
myrl.addView(edit, lp3);
builder.setContentView(myrl);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
builder.show();
}
});
}
每次打开对话框和关闭对话框,它都会占用大约 .05MB 的内存。
为什么我关闭对话框后没有立即检索到这 0.05MB 内存?
它仅在所有空闲内存空间都被使用时才进行垃圾回收。
有人可以解释一下为什么我关闭对话框后没有立即检索正在使用的内存吗?
Java 直到必须时才会 运行 垃圾收集器,因为垃圾收集器 会减慢速度 很多,因此不应该运行 非常频繁。当 需要 内存被释放时,它 运行s。因此,在您关闭对话框后,仍然有足够的可用内存供系统使用(还没有短缺),因此 Java 不会调用 GC 事件。尽可能延迟 GC 总是首选。
如果你想在一个进程被杀死后立即释放它的内存,你可以运行 System.gc()
但是不推荐这样做.
为什么Android执行完成后不检索小部件的内存使用情况?
这是截图:
上图显示了我与对话框的交互。
public class MainActivity extends AppCompatActivity {
Dialog builder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
builder = new Dialog(this);
RelativeLayout myrl = new RelativeLayout(this);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams lp3 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
TextView textview = new TextView(this);
textview.setText("Dynamically Coded");
textview.setId(View.generateViewId());
textview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
builder.dismiss();
}
});
NumberPicker numpick = new NumberPicker(this);
numpick.setId(View.generateViewId());
EditText edit = new EditText(this);
lp2.addRule(RelativeLayout.BELOW, textview.getId());
lp3.addRule(RelativeLayout.BELOW, numpick.getId());
myrl.addView(textview, lp);
myrl.addView(numpick, lp2);
myrl.addView(edit, lp3);
builder.setContentView(myrl);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
builder.show();
}
});
}
每次打开对话框和关闭对话框,它都会占用大约 .05MB 的内存。
为什么我关闭对话框后没有立即检索到这 0.05MB 内存?
它仅在所有空闲内存空间都被使用时才进行垃圾回收。
有人可以解释一下为什么我关闭对话框后没有立即检索正在使用的内存吗?
Java 直到必须时才会 运行 垃圾收集器,因为垃圾收集器 会减慢速度 很多,因此不应该运行 非常频繁。当 需要 内存被释放时,它 运行s。因此,在您关闭对话框后,仍然有足够的可用内存供系统使用(还没有短缺),因此 Java 不会调用 GC 事件。尽可能延迟 GC 总是首选。
如果你想在一个进程被杀死后立即释放它的内存,你可以运行 System.gc()
但是不推荐这样做.