我是Android的新手,我的应用有时会产生outOfMemoryException
。因此,我必须检查我的应用程序使用多少ram并尝试减少它。
两个问题:
outOfMemoryException
?非常感谢你的帮助!
答案 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大小。但这不完全是。