如何知道我的应用程序需要多大的ram?

时间:2016-09-13 04:56:37

标签: android memory out-of-memory

我是Android的新手,我的应用有时会产生outOfMemoryException。因此,我必须检查我的应用程序使用多少ram并尝试减少它。

两个问题:

  1. 如何知道我的应用使用的内存大小?
  2. 通常情况下,应用程序的ram大小的安全阈值是多少,因此不会导致outOfMemoryException
  3. 非常感谢你的帮助!

3 个答案:

答案 0 :(得分:1)

查看Android Studio的内嵌memory monitor。你会发现的 Android监视器>显示器

对于问题的第二部分,您可以使用ActivtyManager课程' getMemoryClass ()方法。 来自android doc ..

  

返回当前设备的近似每应用程序内存类。这可以让您了解应该对应用程序施加的内存限制有多难,以使整个系统最佳运行。返回值以兆字节为单位;基线Android内存类是16(恰好是这些设备的Java堆限制);一些具有更多内存的设备可能会返回24或更高的数字。

答案 1 :(得分:0)

在尝试加载图像之前,检查图像尺寸是否小于可用内存。因此,处理OutOfMemoryException的最有效方法是以这样一种方式构建应用程序:它永远不会尝试将大量数据加载到内存中以避免异常。

在将图像加载到内存之前使用

压缩图像
Bitmap original = BitmapFactory.decodeStream(getAssets().open("1024x768.jpg"));
ByteArrayOutputStream out = new ByteArrayOutputStream();
original.compress(Bitmap.CompressFormat.PNG, 100, out);
Bitmap decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()));

Log.e("Original   dimensions", original.getWidth()+" "+original.getHeight());
Log.e("Compressed dimensions", decoded.getWidth()+" "+decoded.getHeight());  

答案 2 :(得分:0)

1.如何知道我的应用使用的内存大小? 这个问题很难回答。不同类型的应用程序需要不同的内存。

2.通常,应用程序的ram大小的安全阈值是多少,这样它就不会导致outOfMemoryException? 不同设备具有不同的阈值。你通常可以使用

Runtime rt=Runtime.getRuntime();
long maxMemory=rt.maxMemory();
Log.i("maxMemory:",Long.toString(maxMemory/(1024*1024)));

查看您可以使用的maxMemory大小。但这不完全是。