有关Android APK安装不了的问题—— GC_EXTERNAL_ALLOC freed 与 GC_EXPLICIT freed

来源:互联网 发布:软件工程项目管理 编辑:程序博客网 时间:2024/05/18 13:47

在Android项目发布时,对一些手机进行测试,发现有些安装不了,查看打印如下:

01-19 20:07:30.757: D/AndroidRuntime(5631): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<01-19 20:07:30.757: D/AndroidRuntime(5631): CheckJNI is OFF01-19 20:07:30.757: I/AndroidRuntime(5631): JNI options: '-Xjniopts:warnonly'01-19 20:07:30.992: D/AndroidRuntime(5631): Calling main entry com.android.commands.pm.Pm01-19 20:07:31.046: D/dalvikvm(2317): GC_EXPLICIT freed 7K, 50% free 2723K/5379K, external 1625K/2137K, paused 34ms01-19 20:07:31.046: W/ActivityManager(1492): No content provider found for: 01-19 20:07:32.125: D/PackageParser(1492): Scanning package: /data/app/vmdl-1479433642.tmp01-19 20:07:32.125: W/ActivityManager(1492): No content provider found for: 01-19 20:07:32.296: D/dalvikvm(1492): GC_CONCURRENT freed 1064K, 59% free 5197K/12423K, external 3538K/4418K, paused 4ms+8ms01-19 20:07:32.453: D/BatteryService(1492): update start01-19 20:07:33.007: D/dalvikvm(1492): GC_CONCURRENT freed 1510K, 59% free 5165K/12423K, external 3538K/4418K, paused 4ms+7ms01-19 20:07:33.296: D/PackageManager(1492): Scanning package com.xqsoft.firstgame01-19 20:07:33.296: W/PackageManager(1492): Check ABI compatibility01-19 20:07:33.304: W/NativeHelper(1492): Native ABI mismatch from package file01-19 20:07:33.304: E/PackageManager(1492): INSTALL_FAILED_CPU_ABI_INCOMPATIBLE01-19 20:07:33.304: W/PackageManager(1492): Package couldn't be installed in /data/app/com.xqsoft.firstgame-1.apk01-19 20:07:33.390: D/dalvikvm(1492): GC_EXPLICIT freed 474K, 59% free 5132K/12423K, external 3538K/4418K, paused 76ms01-19 20:07:33.414: D/AndroidRuntime(5631): Shutting down VM01-19 20:07:33.421: D/dalvikvm(5631): GC_CONCURRENT freed 217K, 69% free 318K/1024K, external 0K/0K, paused 0ms+0ms01-19 20:07:33.421: D/dalvikvm(5631): Debugger has detached; object registry had 1 entries01-19 20:07:33.437: I/AndroidRuntime(5631): NOTE: attach of thread 'Binder Thread #3' failed01-19 20:07:35.078: D/wpa_supplicant(1650): wpa_supplicant_scan: scan_req = 0, ap_scan = 101-19 20:07:35.078: D/wpa_supplicant(1650): Starting AP scan (broadcast SSID)01-19 20:07:35.078: D/wpa_supplicant(1650): wpa_driver_wext_scan: specific scan = 001-19 20:07:35.265: D/wpa_supplicant(1650): Scan requested - scan timeout 15 seconds01-19 20:07:35.593: W/MountService(1492): getVolumeState(/mnt/sdcard/external_sd): Unknown volume01-19 20:07:35.593: W/MountService(1492): getVolumeState(/mnt/sdcard-ext): Unknown volume01-19 20:07:35.593: W/MountService(1492): getVolumeState(/mnt/ext_sdcard): Unknown volume01-19 20:07:35.593: W/MountService(1492): getVolumeState(/mnt/sdcard2): Unknown volume01-19 20:07:35.601: W/MountService(1492): getVolumeState(/mnt/emmc): Unknown volume01-19 20:07:35.601: W/MountService(1492): getVolumeState(/mnt/extSdCard): Unknown volume01-19 20:07:35.601: W/MountService(1492): getVolumeState(/mnt/sdcard/SD_CARD): Unknown volume01-19 20:07:35.601: W/MountService(1492): getVolumeState(/mnt/sdcard/extra_sd): Unknown volume01-19 20:07:35.601: W/MountService(1492): getVolumeState(/mnt/extrasd_bind): Unknown volume01-19 20:07:35.601: W/MountService(1492): getVolumeState(/mnt/sdcard/ext_sd): Unknown volume01-19 20:07:35.601: W/MountService(1492): getVolumeState(/storage/extSdCard): Unknown volume01-19 20:07:35.601: W/MountService(1492): getVolumeState(/storage/sdcard1): Unknown volume01-19 20:07:35.601: W/MountService(1492): getVolumeState(/mnt/sdcard/external_SD): Unknown volume01-19 20:07:35.609: W/MountService(1492): getVolumeState(/mnt/sdcard/external_sd): Unknown volume01-19 20:07:35.679: D/dalvikvm(2387): GC_CONCURRENT freed 880K, 61% free 3777K/9479K, external 1625K/2137K, paused 4ms+6ms01-19 20:07:35.867: D/SmsProvider(1576): --------query and url=content://sms-------01-19 20:07:35.945: D/SmsProvider(1576): --------query and url=content://sms-------01-19 20:07:36.039: D/wpa_supplicant(1650): RTM_NEWLINK: operstate=0 ifi_flags=0x11003 ([UP][LOWER_UP])01-19 20:07:36.039: D/wpa_supplicant(1650): RTM_NEWLINK, IFLA_IFNAME: Interface 'eth0' added01-19 20:07:36.039: D/wpa_supplicant(1650): Wireless event: cmd=0x8b19 len=801-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): wpa_driver_wext_add_scan_entry: wapi_ie_len=001-19 20:07:36.101: D/wpa_supplicant(1650): Received 2949 bytes of scan results (11 BSSes)01-19 20:07:36.101: D/wpa_supplicant(1650): New scan results available01-19 20:07:36.101: D/wpa_supplicant(1650): Selecting BSS from priority group 1101-19 20:07:36.101: D/wpa_supplicant(1650): Try to find WAPI-enabled AP01-19 20:07:36.101: D/wpa_supplicant(1650): 0: d8:15:0d:c4:45:0a ssid='xqsoft2' wapi_ie_len=0 caps=0x1101-19 20:07:36.101: D/wpa_supplicant(1650):    skip - no WAPI IE01-19 20:07:36.101: D/wpa_supplicant(1650): 1: 34:cd:be:37:ee:24 ssid='ChinaNet-yvDV' wapi_ie_len=0 caps=0x1101-19 20:07:36.101: D/wpa_supplicant(1650):    skip - no WAPI IE01-19 20:07:36.101: D/wpa_supplicant(1650): 2: d0:c7:c0:b3:cc:08 ssid='diskoopen1' wapi_ie_len=0 caps=0x1101-19 20:07:36.101: D/wpa_supplicant(1650):    skip - no WAPI IE01-19 20:07:36.101: D/wpa_supplicant(1650): 3: 14:75:90:db:1d:aa ssid='xqsoft' wapi_ie_len=0 caps=0x1101-19 20:07:36.101: D/wpa_supplicant(1650):    skip - no WAPI IE01-19 20:07:36.101: D/wpa_supplicant(1650): 4: d0:c7:c0:b3:b8:aa ssid='disko03' wapi_ie_len=0 caps=0x1101-19 20:07:36.101: D/wpa_supplicant(1650):    skip - no WAPI IE01-19 20:07:36.101: D/wpa_supplicant(1650): 5: 14:75:90:5c:12:24 ssid='disko2' wapi_ie_len=0 caps=0x1101-19 20:07:36.101: D/wpa_supplicant(1650):    skip - no WAPI IE01-19 20:07:36.101: D/wpa_supplicant(1650): 6: d0:c7:c0:00:b6:26 ssid='QHBS888_2.4GHz' wapi_ie_len=0 caps=0x1101-19 20:07:36.101: D/wpa_supplicant(1650):    skip - no WAPI IE

查看了一些资料后,找到了一样的文档,如下:

原文:http://blog.sina.com.cn/s/blog_5da93c8f0100voq7.html


11-23 15:30:17.644: DEBUG/dalvikvm(25269): GC_EXTERNAL_ALLOC freed 188K, 53% free 3983K/8391K, external 13728K/13848K, paused 27ms
11-23 15:30:48.617: DEBUG/dalvikvm(5359): GC_EXPLICIT freed 1K, 47% free 3216K/5959K, external 3989K/4641K, paused 54ms

很多做开发的朋友不明白上面这句是什么意思,给大家解释一下! 

前面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。


也就会说内存不够。


0 0