Android用LruCache来取代原来强引用和软引用实现内存缓存,因为据说自2.3以后Android将更频繁的调用GC,导致软引用缓存的数据极易被释放。LruCache使用一个LinkedHashMap简单的实现内存的缓存,没有软引用,都是强引用。如果添加的数据大于设置的最大值,就删除最先缓存的...
分类:
系统相关 时间:
2015-03-04 18:45:40
阅读次数:
179
原因:
目前有两种猜测,第一种就是类加载容易,但是类卸载就不那么容易了,第二种猜测就是类缓存机制,从classloader的运行过程可以分析到有个过程是缓存常用类的,感觉这个过程没法释放,因为他会认为你以后会一直用。
测试内存泄露代码:
可以用DDMS测试下,当你调用GC的时候byte是可以回收的,但是classloader就没法回收了,也许你认为是因为调用了activity的classlo...
分类:
其他好文 时间:
2015-03-04 11:14:09
阅读次数:
162
题目链接:点击打开链接
题意:
给定长度为n的一个字符串s。
构造长度也为n的字符串t。使得p(s,t)值最大,问有多少个不同的t
h(s,t) = 对应位置上字母相同的个数
ρ("AGC",?"CGT")?=?
h("AGC",?"CGT")?+?h("AGC",?"GTC")?+?h("AGC",?"TCG")?+?
h("GCA",?"CGT")?+?h("GC...
分类:
其他好文 时间:
2015-03-03 23:39:30
阅读次数:
228
知乎问题Java 等语言的 GC 为什么不实时释放内存?下面是RednaxelaFX的回答:1.最基本的纯引用计数方式的自动内存管理可以做到实时释放死对象,但却无法处理存在循环引用的对象图的释放。这个问题一定程度上可以通过引入弱引用的概念来解决,但通用的能处理带循环引用对象图的引用计数都是有别的管理...
分类:
编程语言 时间:
2015-03-03 16:29:02
阅读次数:
199
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核...
分类:
编程语言 时间:
2015-03-02 16:43:02
阅读次数:
195
第一个就是很多人用.Net写程序,会谈到托管这个概念。那么.Net所指的资源托管到底是什么意思,是相对于所有资源,还是只限于某一方面资源?很多人对此不是很了解,其实.Net所指的托管只是针对内存这一个方面,并不是对于所有的资源;因此对于Stream,数据库的连接,GDI+的相关对象,还有Com对象等...
1.“引用记数(reference counting)”是一种简单但速度很慢的垃圾回收技术。每个对象都含有一个引用记数器,当有引用连接至对象时,引用计数加1。当引用离开作用域或被置 为null时,引用计数减1。虽然管理引用记数的开销不大,但需要在整个程序生命周期中持续地开销。垃圾回收器会在含有全部对...
分类:
编程语言 时间:
2015-03-01 23:41:54
阅读次数:
264
来自Oracle官方文档,对JVM GC知识整理的清晰易懂,查资料还是看官方的好!1 GC步骤简述步骤1:标记 (Marking)根据对象引用关系,将未被任何对象引用的对象实例标记出来,如下图中的黄色。当堆中的所有对象都要被扫描一遍时(如Major GC),将会非常耗时。步骤2:删除 (Sweeping)Ø 普通删除:直接删除未被引用的对象,之后内存分配器(memory allocator)要持...
分类:
其他好文 时间:
2015-02-28 23:03:09
阅读次数:
308
Eclipse报错:gc overhead limit exceeded eclipse
原因是Eclipse默认配置内存太小需要更改Eclipse安装文件夹下的eclipse.ini文件。
Eclipse.ini默认文件如下:
修改如下:
-Xms512m -Xmx1024m
第一个是最小的初始化内存,第二个是最大的占有内存
还可以加上 -XX:MaxPerm...
分类:
系统相关 时间:
2015-02-28 14:46:30
阅读次数:
149
本文讲解了如何设置Java VM参数实现在Full GC前后自动生成Dump。共有三个VM参数需要设置: HeapDumpBeforeFullGC, HeapDumpBeforeFullGC和HeapDumpPath。...
分类:
编程语言 时间:
2015-02-28 08:55:28
阅读次数:
316