摘要: 1.释放单个指针关于Vector中存放指针的问题,在进行清空的时候比较安全的一种做法是: std::vector<ClassName *> ClassNameVec; ...push_back(new ClassName()); std::vector<ClassName *>::iterator ClassNameIt = ClassNameVec.begin(); for(;ClassNameIt != ClassNameVec.end();++ClassNameIt) { if(*ClassNameIt != NULL) { delete *ClassNameIt 阅读全文
posted @ 2013-06-16 17:35 ensai 阅读(1305) 评论(0) 推荐(0) 编辑
摘要: 前言众所周知,每个Android应用程序在运行时都有一定的内存限制,限制大小一般为16MB或24MB(视平台而定)。因此在开发应用时需要特别关注自身的内存使用量,而一般最耗内存量的资源,一般是图片、音频文件、视频文件等多媒体资源;由于Android系统对音频、视频等资源做了边解析便播放的处理,使用时并不会把整个文件加载到内存中,一般不会出现内存溢出(以下简称OOM)的错误,因此它们的内存消耗问题暂不在本文的讨论范围。本文重点讨论的是图片的内存消耗问题,如果你要开发的是一款图片浏览器应用,例如像Android系统自带的Gallery那样的应用,这个问题将变得尤为突出;如果你开发的是目前的购物客户 阅读全文
posted @ 2012-12-25 16:53 ensai 阅读(652) 评论(0) 推荐(0) 编辑
摘要: 看了之后有种恍然大悟的感觉,原来不够用在于分配上。来源于http://devspirit.blog.163.com/blog/static/16425531520104199512427/基于Android开发多媒体和游戏应用时,可能会挺经常出现Out Of Memory 异常 ,顾名思义这个异常是说你的内存不够用或者耗尽了。 在Android中,一个Process 只能使用16M内存,如果超过了这个限制就会跳出这个异常。这样就要求我们要时刻想着释放资源。Java的回收工作是交给GC的,如何让GC能及时的回收已经不是用的对象,这个里面有很多技巧,大家可以google一下。 因为总内存的... 阅读全文
posted @ 2012-12-24 13:57 ensai 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 转自(http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost&gid=74&tid=20713&pg=1) 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序。以上理由,足以需要开发人员更加专心去实现和优化你的代码了。选择合适的算法和数据结构永远是开发人员最先应该考虑的事情。同时,我们应该时刻牢记,写出高效代码的两条基本的 阅读全文
posted @ 2012-12-03 14:43 ensai 阅读(1147) 评论(0) 推荐(0) 编辑
摘要: List特点:元素有放入顺序,元素可重复Map特点:元素按键值对存储,无放入顺序Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)List接口有三个实现类:LinkedList,ArrayList,VectorLinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低Set接口有两个实现类:HashSet(底 阅读全文
posted @ 2012-09-27 00:28 ensai 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。例如我们可以用ArrayList来存储一系列的String或者Integer。那么ArrayList和Li 阅读全文
posted @ 2012-09-27 00:19 ensai 阅读(386) 评论(0) 推荐(0) 编辑
摘要: (转自http://www.blogjava.net/lincode/archive/2011/09/16/358805.html)android 中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable。一 序列化原因:1.永久性保存对象,保存对象的字节序列到本地文件中;2.通过序列化对象在网络中传递对象;3.通过序列化在进程间传递对象。二 至于选取哪种可参考下面的原则:1.在使用内存的时候,Parcelable 类比Serializable性能高,所以推荐使用Parcelable类。2.Serializable在序列化的时候会产生大量的临时变量,从 阅读全文
posted @ 2012-09-25 22:56 ensai 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 转自http://www.cnblogs.com/chen111/archive/2012/09/05/2672659.html下面来说一下#import同class之间的区别在ios中我们经常会在.h和.m中引入一些类啊等等一般用的是#import来进行声明,你们可能也见到在.h文件进用@class来声明的,那么#import和@class进行声明 到底有什么的区别呢?下面我来说说1.import会包含这个类的所有信息,包括实体变量和方法,而@class只告诉编 译器,声明的类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你,所以在头文件中如果用@class声明某个类后,在.m的 阅读全文
posted @ 2012-09-11 11:29 ensai 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 转自http://www.infoq.com/cn/news/2012/07/systematic-analysis-performance最近的这篇有关性能调优的博文中,作者首先提出“要进行优化,先得找到性能瓶颈!”。为了对于性能瓶颈有一致的认识,作者对系统性能的条件做了简单描述:Throughput ,吞吐量。也就是每秒钟可以处理的请求数,任务数。Latency, 系统延迟。也就是系统在处理一个请求或一个任务时的延迟。这两个条件相互约束,他们的关系如陈皓所分享的:Throughput越大,Latency会越差。因为请求量过大,系统太繁忙,所以响应速度自然会低。Latency越好,能支持的T 阅读全文
posted @ 2012-08-16 14:16 ensai 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 前言初学objectice-C的朋友都有一个困惑,总觉得对objective-C的内存管理机制琢磨不透,程序经常内存泄漏或莫名其妙的崩溃。我在这里总结了自己对objective-C内存管理机制的研究成果和经验,写了这么一个由浅入深的教程。希望对大家有所帮助,也欢迎大家一起探讨。此文涉及的内存管理是针对于继承于NSObject的Class。一基本原理Objective-C的内存管理机制与.Net/Java那种全自动的垃圾回收机制是不同的,它本质上还是C语言中的手动管理方式,只不过稍微加了一些自动方法。1Objective-C的对象生成于堆之上,生成之后,需要一个指针来指向它。ClassA *ob 阅读全文
posted @ 2012-07-22 23:15 ensai 阅读(372) 评论(0) 推荐(0) 编辑