在手机运行期间log中常常会弹出:
GC_FOR_MALLOC freed 13030 objects / 525016 bytes in 184ms
这样的信息;
下面进行说明:
GC_EXTERNAL_ALLOC freed 297K, 49% free 3411K/6663K, external 24870K/26260K, paused 83ms
前面Free的内存是VM中java使用的内存,external是指VM中通过JNI中Native的类中的malloc分配出的内存,例如Bitmap和一些Cursor都是这么分配的。
在 Davilk中,给一个程序分配的内存根据机型厂商的不同,而不同,现在的大部分的是32M了,而在VM内部会把这些内存分成java使用的内存和 Native使用的内存,它们之间是不能共享的,就是说当你的Native内存用完了,现在Java又有空闲的内存,这时Native会重新像VM申请, 而不是直接使用java的。
例如上边的例子
free 3411K/6663K和external 24870K/26260K
如果这时需要创建一个2M的Bitmap,Native现有内存26260-24870=1390K<2048k,因此他就会向Vm申请内存,虽然java空闲的内存是
6663-3411=3252>2048,但这部分内存Native是不能使用。
但是你现在去申请2M的Native内存,VM会告诉你无法分配的,因为现在已使用的内存已经接近峰值了32M(26260+6663=32923 ),所以现在就会成force close 报OOM(内存溢出)。
所以现在我们要检查我们的native内存的使用情况来避免OOM。
转载:
http://mysuperbaby.iteye.com/blog/1432882
分享到:
相关推荐
在Android开发过程中,日志(Log)是调试和分析应用行为的重要手段。通常,开发者会使用`adb logcat`命令来查看设备或模拟器上的日志输出。然而,对于复杂项目或者大量日志数据,`adb logcat`的界面可能不够直观,...
`Log4jForAndroid`和`LogUtil`是两个常见的日志工具类,它们帮助开发者以更高效、更有序的方式记录应用程序运行时的信息。本篇文章将深入探讨这两个工具类,并提供如何在Android项目中使用它们的相关知识。 首先,`...
android log记录所需要的文件 1、建立使用logger对象 private static final Logger logger = LoggerFactory.getLogger(main.class); 2、在程序的第activit或者service的oncreate方法里初始化方法 ...
通过阅读资源说明.txt,你可以了解如何使用这些示例来提升Log分析能力。 总之,熟练掌握Log分析技巧对于Android开发者至关重要,它能帮助我们及时发现并解决问题,优化应用性能,提升用户体验。通过不断实践和学习...
以下是这两个文件的详细说明: 1. **android.ipr**: `ipr`文件是IntelliJ IDEA的项目文件,它包含了项目的基本设置和元数据。这个文件存储了关于项目模块、库依赖、编译器设置、运行/调试配置以及外部工具集成等...
本文将详细介绍如何使用"android保存崩溃时的错误信息log至本地"的方法,该方法通过一个名为`CrashHelper`的工具,帮助开发者有效地收集并存储应用程序的Logcat信息。 `CrashHelper`是一个专门为Android设计的工具...
安装完成后,打开 Android Studio,选择“Start a new Android Studio project”,然后选择项目类型、语言和 SDK 等信息,最后点击“Finish”即可创建一个新的 Android 项目。 (4)打包发布 在项目开发完成后,...
ModemLog是Modem内部生成的日志文件,它记录了Modem与网络之间的交互信息,包括信号强度、网络注册状态、数据传输情况等。这些信息对于开发者来说非常宝贵,有助于分析和解决问题,如网络连接失败、通话质量差、...
【其他Log说明】 1. **抓取网络相关log**:对于网络相关问题,如数据业务,需要特定的log来分析网络连接、数据传输等环节。 2. **电话、消息等log**:涉及到电话、短信、SIM卡联系人、PIN码和STK服务的问题,需要...
以下是对`Android的Logcat详细用法`的详细说明: 1. **使用logcat命令**: - `logcat`是通过ADB(Android Debug Bridge)来使用的命令,可用于查看设备或模拟器的日志输出。 - 基本语法:`adb logcat [option] .....
- Logcat是Android系统内置的日志工具,能够捕获除了内核日志之外的所有日志信息。在DOS环境中,通过USB连接手机,使用`adb logcat -v time > c:\logcat.txt`命令可以生成名为logcat.txt的日志文件。如果需要获取...
抓取LOG(日志)是调试和优化这些平台的关键步骤,因为LOG包含了系统运行时的详细信息,有助于识别和解决问题。本文档详细介绍了在这些平台上抓取LOG的环境安装和方法,以帮助客户和工程师进行有效的故障排查和性能...
在Android平台上,获取手机应用信息是一项常见的任务,这通常涉及到读取系统中的应用程序列表,包括应用的名称、图标、包名、版本号等信息。在Android开发中,我们可以使用Android提供的Content Provider和...
至于log.txt,这可能是一个日志文件,记录了应用运行时的相关信息,如错误报告、性能分析或调试信息。在开发过程中,通过分析日志可以帮助开发者发现和解决潜在问题,优化代码性能,特别是在处理复杂的压感笔迹书写...
虽然在给出的内容中没有具体说明`VIEW`权限的功能,但通常情况下,带有`VIEW`意图的动作可以用于打开网页或其他视图界面。 #### 17. `DISABLE_KEYGUARD` 此权限允许应用程序禁用锁屏。这可能会降低设备的安全性,...
2. **应用程序日志** (Application Log): 应用程序产生的日志信息,用于调试和问题排查。 3. **无线电日志** (Radio Log): 关于网络连接和通信的信息,包括蓝牙和蜂窝数据。 4. **事件日志** (Event Log): 系统事件...
在Android开发中,Log4j可以借助第三方库(如Log4Android)进行集成,帮助开发者记录应用运行过程中的信息,便于问题定位和性能优化。 **文档与代码** "Log4j配置以及使用.docx"可能是关于如何配置和使用Log4j的...
android java 通用代码,关于用properties存储打印的Log.zip android 错误收集工具.rar android 错误日志的收集.rar Android下的自定义日志框架。移动开发一般没有必要引入第三方日志框架,可以自己编写.zip ...
在Android中,我们可以利用Properties类将日志信息存储到.properties文件中,以便于日志管理和后续分析。 首先,我们创建一个.properties文件,例如“log.properties”,在其中定义日志的相关属性,如日志级别...