相关疑难解决方法(0)

如何在Android中发现我的应用程序的内存使用情况?

如何以编程方式找到我的Android应用程序上使用的内存?

我希望有办法做到这一点.另外,我如何获得手机的免费记忆?

java memory android memory-management

787
推荐指数
7
解决办法
30万
查看次数

Android:java.lang.OutOfMemoryError:无法分配带有2097152个空闲字节的23970828字节分配和2MB直到OOM

我想在已存储的SD卡中显示ImageView中Bitmap图像.运行后我的应用程序崩溃并导致OutOfMemoryError错误:

(java.lang.OutOfMemoryError:无法分配带有2097152个空闲字节的23970828字节分配和2MB直到OOM)

我不知道或为什么它的内存不足.我认为我的图像尺寸非常大,所以我试图改变它.

Iterator<String> it = imageArray.iterator();
while (it.hasNext()) {
  Object element = it.next();
  String objElement = element.toString();
  Log.e("objElement ", " = " + objElement);
  final ImageView imageView = new ImageView (getContext());
  final ProgressBar pBar = new ProgressBar(getContext(), null, 
                                           android.R.attr.progressBarStyleSmall);
  imageView.setTag(it);
  pBar.setTag(it);

  imageView.setImageResource(R.drawable.img_placeholder);
  pBar.setVisibility(View.VISIBLE);

  if (objElement.endsWith(mp3_Pattern)) {
     Log.e("Mp3 ", " ends with ");
     pBar.setVisibility(View.GONE);
     imageView.setImageResource(R.drawable.audio_control);
  }
  if (objElement.endsWith(png_Pattern)) {
     Bitmap bitmap = BitmapFactory.decodeFile(objElement);
     int size = Math.min(bitmap.getWidth(), bitmap.getHeight());
     int x = (bitmap.getWidth() - size) …
Run Code Online (Sandbox Code Playgroud)

android android-bitmap

317
推荐指数
14
解决办法
35万
查看次数

应用可以使用的最大RAM量是多少?

我对这个关于Android操作系统内存管理的问题很好奇,所以我希望对这个主题有一个非常详细的答案.

我想知道的是:

  • Android应用程序(不是系统应用程序)可以使用的最大内存量(以兆字节 / 占总RAM的百分比)是多少?
  • Android版本之间有什么区别吗?
  • 有关设备制造商的任何差异吗?

最重要的是:

  • 当系统确定应用程序在运行时可以使用多少RAM时(假设每个应用程序的内存最大值不是静态数字),它是什么/它取决于什么

到目前为止我所听到的(直到2013年):

  • 早期的Android设备每个应用上限为16MB
  • 后来这个上限增加到24MB或32MB

是什么让我很好奇:

这两个限制都非常低.

我刚刚下载了Android任务管理器来检查我的设备RAM.我注意到有些应用程序使用大约40-50兆字节的RAM,这比上面提到的最大RAM使用量(比如说32 MB)要多得多.那么Android如何确定应用程序可以使用多少RAM?应用程序如何超出此限制?

此外,我注意到当使用大约30-40兆字节时,我的一些应用程序崩溃(被系统杀死?)和OutOfMemoryException.另一方面,我的手机上运行的应用程序使用100 MB以上的一段时间后(可能由于内存泄漏)不会崩溃或被杀死.因此,在确定可以节省多少RAM时,显然还取决于应用程序本身.这怎么可能?(我用带有768 MB RAM的HTC One S进行了测试)

免责声明:我不以任何方式与Android任务管理器应用程序相关联.

memory android memory-management out-of-memory android-memory

140
推荐指数
3
解决办法
6万
查看次数

如何增加Android应用程序的堆大小?

我正在编写一个使用多个3D模型的Android应用程序.这种带纹理的模型会占用大量内存.我发现制造商对应用程序可以使用的堆大小设置了限制.例如我的平板电脑三星Galaxy Tab 8.9 P7310可以占用64MB的内存.

有没有办法增加应用程序可以使用的内存大小?

android

125
推荐指数
5
解决办法
15万
查看次数

将largeHeap设置为true有什么好处?

我有一个应用程序,我正在设置近50个类android:largeHeap="true",如下所示.这是一个好习惯吗?

<application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="Mall"
        android:largeHeap="true"
        android:logo="@drawable/logo_for_up"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme" >
</application>
Run Code Online (Sandbox Code Playgroud)

请建议使用它的优点和缺点.

我得到记忆问题,这就是我问这个问题的原因.

android android-largeheap

102
推荐指数
5
解决办法
7万
查看次数

不同手机/设备和操作系统版本上的Android堆大小

有没有人知道Android手机上的堆大小是否是根据操作系统版本中设置的常量值,或者这是电话制作者可以决定的设置?

堆大小是否与手机上的RAM量成正比?

我只找到了人们说应用程序的堆大小为16M的文章.但是,这些文章有点陈旧.从我看来,作为一个例子,在一个特定型号上,堆大小从大约20M到24M不等.这款手机拥有768M的RAM.

heap android

71
推荐指数
6
解决办法
9万
查看次数

如何在Android中解决java.lang.OutOfMemoryError问题

尽管我在drawable文件夹中有一个非常小的图像,我从用户那里得到了这个错误.我没有在代码中使用任何位图功能.至少故意:)

java.lang.OutOfMemoryError
    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:683)
    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:513)
    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:889)
    at android.content.res.Resources.loadDrawable(Resources.java:3436)
    at android.content.res.Resources.getDrawable(Resources.java:1909)
    at android.view.View.setBackgroundResource(View.java:16251)
    at com.autkusoytas.bilbakalim.SoruEkrani.cevapSecimi(SoruEkrani.java:666)
    at com.autkusoytas.bilbakalim.SoruEkrani$9$1.run(SoruEkrani.java:862)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:146)
    at android.app.ActivityThread.main(ActivityThread.java:5602)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

根据这个stackTrace,我在这一行得到了这个错误('tv'是一个textView):

tv.setBackgroundResource(R.drawable.yanlis);
Run Code Online (Sandbox Code Playgroud)

问题是什么?如果您需要有关代码的其他信息,我可以添加它.谢谢!

android bitmap out-of-memory setbackground bitmapfactory

65
推荐指数
4
解决办法
11万
查看次数

Android中的位图

我有一些关于Bitmap对象和内存及其一般分类的问题.

  1. 什么是内存或本机位图?
  2. Bitmap内存与堆内存有何不同?

android bitmap

29
推荐指数
3
解决办法
3万
查看次数

关于android中最大堆大小和可用内存的两个问题

我看到堆大小会随着应用程序的需要自动增加,直到手机的最大堆大小为止.我还看到最大堆大小因设备而异.

所以我的第一个问题是,Android设备上的典型Max Heap大小是多少?我已经在一部手机上测试了内存分配,该手机能够使用超过40mb的堆,而另一部手机在20的mbs中发出OutOfMemory错误.常用设备中最低的是什么,普通设备上最高的是什么?有标准还是平均?

第二个问题,更重要的一个问题,是如何确保您能够使用每台设备可用的资源,但避免使用太多?我知道有一些方法,比如onLowMemory(),但这些方法似乎只适用于整个系统内存,而不仅仅是特定应用程序的堆.

有没有办法检测设备的最大堆大小,还检测可用堆内存何时达到应用程序的低点?

例如,如果设备仅允许最大堆24mb并且应用程序接近分配的限制,那么它可以检测并缩小.但是,如果设备可以舒适地处理更多,它将能够利用可用的东西.

谢谢

memory heap android

22
推荐指数
2
解决办法
2万
查看次数

如何检测Android应用程序的堆大小使用情况

我想通过两种方式知道我的android应用程序使用的堆空间量: - 以编程方式 - 通过DDMS.

在发布之前我已经提到了这篇文章.在Debug.getNativeHeapSize()那篇文章中,提到了,返回堆大小.这是我应该使用的确切方法,以编程方式检测堆大小?如果是这样,我应该在哪里记录它以获得我的应用程序的正确堆大小使用?

java android android-widget android-emulator

21
推荐指数
1
解决办法
2万
查看次数