Fatal signal 11 (SIGSEGV) at 0x000007c4 (code=1)

原代码是:

		HashMap<String, Object> listItemMap = new HashMap<String, Object>();
		listItemMap.put("ItemImage", R.drawable.image1);
		listItemMap.put("ItemText", "introduction");
		this.listItem.add(listItemMap);
		
		listItemMap = new HashMap<String, Object>();
		listItemMap.put("ItemImage", R.drawable.image2);
		listItemMap.put("ItemText", "weather");
		this.listItem.add(listItemMap);
		
		listItemMap = new HashMap<String, Object>();
		listItemMap.put("ItemImage", R.drawable.image3);
		listItemMap.put("ItemText", "gallery");
		this.listItem.add(listItemMap);
		
		listItemMap = new HashMap<String, Object>();
		listItemMap.put("ItemImage", R.drawable.forward);
		listItemMap.put("ItemText", "testing");
		this.listItem.add(listItemMap);

		this.listView.setAdapter(this.listItemAdapter);

原来意图是在listview的每个item都添加一个imageview,我这里定义的listview只有4个item,但是没有注意到memory的问题,直接从drawable load进来

直接提示:
E/dalvikvm-heap(18508): Out of memory on a 2469776-byte allocation.
其中image1,2,3,4都是1024 * 768 占用内存比较大的图片。每张图片接近1M。

阅读了android的documents:

http://developer.android.com/training/displaying-bitmaps/index.html

里面有提到一些方法,但是因为屏幕上可以显示好多个listview的item,导致可以间接或者直接使用的接口:

decodeByteArray()decodeFile()decodeResource()或者recyle机制等对我这种情况都没用

或许只有我那么奇葩,用那么高分辨率的图片做item的图标,最终决定开大招:

用ps把图片分辨率改了,内存占用自然也少,每张图片只有几k。

或许你有其他好办法?欢迎指正!

 

注:引起:Fatal signal 11 (SIGSEGV) at 0x000007c4 (code=1) exception,OOM不是唯一原因。

这里讨论的是OOM。另外可以使用

Runtime rt = Runtime.getRuntime();
long maxMemory = rt.maxMemory();
Log.v("onCreate", "maxMemory:" + Long.toString(maxMemory));

ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
int memoryClass = am.getMemoryClass();
Log.v("onCreate", "memoryClass:" + Integer.toString(memoryClass));

来查看设备的application heap max value。详细请看:

http://stackoverflow.com/questions/2630158/detect-application-heap-size-in-android/9428660#9428660

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值