关于内存泄漏那些事-实战

内存泄漏以及回收案例分析

1.频繁的创建监听事件会有什么问题?

问题蛮大的,这就是空间复杂度的问题了,每次new一个对象那么在内存中就会增加一个对象的实例也就是最小的(一个对象是由对象头16。实例数据。对齐填充)。

2.如果解决这个问题呢?

通过调试gc发现额外饮用被回收了,足足36byte,已经很不错了哈哈,那么程序内部如何去处理呢?Runtime.getRuntime().gc(); 神奇呀 刚才我们高并发的手指创建了100个实例,转眼就少了99个也就是 99*12 ,不敢想象呀,想知道回收能节省多少内存吗?   RetainedSize就对了,Shallow就是每个实例的size

3.如果引用了别的对象呢?

之前我们都是没有引用其他的对象的,那么如果我们引用了呢,会出现什么情况? 此时发现了一个新的情况,这个类增加了,哈哈对了,我们增加了变量activityji+4


我们继续gc,在我们疯狂的GC以后,原来是可以降下的


4.那如果类开一个线程呢?

就一个空线程


线程浪费严重,杜绝,GC。。。OK,内存回收又节省了一大批内存。

5.如果这个类线程一直运行呢?

     哎,GC也是要代价的,咔咔咔,线程开多了也是个负担呀


杀不死呀!!!,咔咔咔 ,咋办??? 回到之前如果线程停止了不久好了!是的没错,结束了一个线程就好了,但是注意这个是重点,在一个类中开启了一个无限循环的线程,如果没有管理注销这个线程而开启新的类,那么危险来临了这个类,无人认领了,驻扎在内存中不走了,(之前项目中遇到这个情况过,就是因为有线程无人认领,疯狂的在后台执行,也就是我说一句话,给我socketsend N 哈哈),

6.这里出现了一个疑惑 为什么最终都剩下两个引用类呢?不应该一个吗?还没有解决希望能有大神帮忙。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值