Android Cookie

Android 安卓是最开放的手机操作系统,谷歌安卓APP开发和安卓市场的相关话题

Android了解堆大小

我对Android开发相当陌生,似乎无法掌握Java内存exception。 我知道这意味着我的应用程序已经超过了虚拟机的预算,但经过Google多次search后,我似乎仍然没有把握这个概念。 恐怕我的应用程序使用了太多内存,因为每个屏幕有六个buttonselect器,每个select器有两个位图,根据属性选项卡,每个select器大约20 kb。 在我根深蒂固的G2x上,我将虚拟机预算设置为12MB,重新启动手机,无任何问题地运行我的应用程序。 我在每个onDestroy()上解绑定drawables,暗示GC也在这里运行。 在模拟器中使用应用程序一段时间后,在我的DDMS屏幕上单击“原因GC”,结果是ID = 1,堆大小6.133 MB,分配2.895MB,免费3.238 MB,%使用47.20,#对象52,623。 这是我不明白发生了什么,我的模拟器设置为24MB的虚拟机。 那个号码在哪里? 我遇到的实际问题是,如果我将模拟器设置为16MB的虚拟机,那么我的应用程序会在内存不足exception的第二个活动中崩溃。 为什么在我的手机上,虚拟机设置为12 MB,或者在带有12 MB虚拟机存储的旧版HTC Magic手机上,它不会崩溃? 你也认为我的应用程序占用太多的内存? 我不知道这些DDMS号码是否好。 谢谢你的时间。 至于我的代码,我已经在XML布局中指定了每个图像,除了向它们添加监听器之外,我不会对它们进行编程。 我在这里find了这样的代码,并且将它添加到了我所有的活动中。 @Override protected void onDestroy() { super.onDestroy(); unbindDrawables(findViewById(R.id.myRootLayout)); System.gc(); } private void unbindDrawables(View view) { if (view.getBackground() != null) { view.getBackground().setCallback(null); } if (view instanceof ViewGroup && !(view instanceof AdapterView)) { for (int […]