前言

IT行业薪水高,这是众所周知的,所以很多人大学都选择IT相关专业,即使非该专业的人,毕业了也想去一个培训机构镀镀金,进入这一行业。

但是有关这个行业35岁就退休的说法,也一直盛传。

加上这几年不断有各大公司裁员,最著名的就是华为,35岁以上的被剔除的甚多。

但是这都是被媒体放大的数据,真实情况往往不是表面看到的那样残酷。

很多在这方面有能力的人,30岁之前可以频繁跳槽,30岁之后找一个稳定的跟自己投缘的大企业,你为企业带来的价值大于企业给予你的付出,你的职位肯定是稳稳的。而且上升趋势也不错。

一般到了35岁,也就昏倒了技术管理岗,无论是在网易、阿里、华为、滴滴、美团这些大企业,还是一些小的互联网企业,这类人都是中坚力量。

而我们反过来看看被裁掉的35岁以上的人,职位低、收入低、可替代性强,也就是混了10多年了,你还是在最低端的岗位,那么只能被后来年轻人淘汰。

这就是中国的现实,你想踏踏实实当一个纯粹的码农,好像挺难的,不像国外,有的人四五十岁还能当一个底层的纯粹的码农,只专注于写好的代码好的软件。

但是这就是现实,要想不在35岁被退休,那么就在入职时候做好职业规划。

自学能力和解决问题能力,永远都是IT职业人必备的能力。

内存泄漏是什么?

内存泄漏即 ML (Memory Leak) 指 程序在申请内存后,当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象

内存泄漏有哪些情况,对应的解决方案?

内存泄漏的原因归根到底就是当需要被回收变量的内存被其他变量引用持有,导致内存回收失败

常见的原因有:

1.非静态内部类/匿名类

  • 原因1:非静态内部类/匿名类 Handler持有外部的Activity/Fragment对象的引用,导致Activity/Fragemnt被销毁的时候没有被回收

  • 解决方案:

    1. 将Handler类改为静态内部类 + 弱引用(WeakReference)持有Activity引用(静态类默认不持有外部的引用)
    2. 当外部类(一般是Activity/Fragment)结束生命周期时,清空Handler队列
  • 原因2:非静态内部类的实例(对象) = 静态实例 (其生命周期 = 应用的生命周期)

  • 解决方案:

    1. 将该类改为静态类(静态类默认不持有外部的引用)
    2. 将该类抽出来封装成为一个单例
  • 原因3:多线程 工作线程正在处理任务时外部类需要销毁,此时工作线程持有外部类的引用导致无法被回收

  • 解决方案:

    1. 将该线程类类改为静态类(静态类默认不持有外部的引用)
    2. 当外部类结束生命周期时强制结束线程

2.集合类

  • 原因:集合类添加元素之后持有集合元素的引用,导致该集合元素不可被回收,导致内存泄漏

  • 解决方案:

    1. 集合类使用完元素对象后,必须将该元素从集合中删除(由于一个集合中有多个元素,所以最简单的方案就是清空集合对象(clean)&设置为Null)

3.资源对象使用后未关闭

  • 原因:资源对象使用后未关闭,在Activity/Fragemnt销毁时没有关闭/注销这些资源,将导致无法回收 例如:广播BraodcastReceiver文件流Fire图片资源Bitmap数据库游标

  • 解决方案:

    1. Activity销毁时及时关闭/注销资源

4.Static关键字修饰成员变量

  • 原因:Static关键字修饰成员变量的生命周期 = 应用的生命周期 例如 private static Context mContext = context 那么context上下文对应的Activity则无法被回收

  • 解决方案:

    1. 尽量不要使用Static成员变量引用,使用弱引用代替强引用
    2. 使用单例模式

4.其他使用

  • 原因1:Context:当拥有Activity context的引用的对象仍在使用,则该Activity需要销毁时无法回收

  • 解决方案:

    1. context的引用不要超过它的生命周期
    2. 使用ApplicationContext代替
  • 原因2:WebView:不再使用WebView对象后没有及时销毁,导致内存占用

  • 解决方案:

    1. 通过多线程对不再使用的WebView对象进行销毁
  • 原因3:Adapter:滑动ListView、RecycleView获取新View时 都在getView()中重新实例化一个View对象,浪费资源,使内存占用越来越大

  • 解决方案:

    1. 使用缓存的convertView
    2. 直接使用ViewHolder

最后

现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

上述【高清技术脑图】以及【配套的架构技术PDF】点击:Android架构视频+BAT面试专题PDF+学习笔记,或者私信回复【技能提升】即可获取!

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!

Android架构师之路很漫长,一起共勉吧!

学海无涯!2021年抓住金三银四涨薪好时机,持续更新中相关推荐

  1. 全网最全原理讲解!2021年抓住金三银四涨薪好时机,跳槽薪资翻倍

    开头 25岁那年,我从京东离职,入职百度. 在百度认识了当时的架构师久哥(T9级别),因为他的一番话,彻底改变了我的职业生涯,短短三年的时间,我从一枚普通程序员成长为别人眼中的技术大咖. 当时因为业务 ...

  2. 抓住金三银四好机会,超齐全java大厂面试题汇总(请自寻学习查找答案)

    目录 一.JDK源码 1.HashMap 2.concurrentHashMap 3.volatile 4.linkedList.ArrayList 5.线程池 6.设计模式 二.JVM.GC.G1 ...

  3. 2021年:金三银四最强悍的 js 面试题

    实现迷你 Vue 框架 如何实现 MVVM 类 Vue 迷你框架(一) 如何实现 MVVM 类 Vue 迷你框架(二) 如何实现 MVVM 类 Vue 迷你框架(三)

  4. 抓住金三银四的尾巴,解锁程序员面试《刷题神器》

    点赞 ➕ 评论 ➕ 收藏 = 三连再看你最帅 刷题 不仅能掌握知识,快速学习进步. 更能轻松搞定面试,尤其是有的大厂 钟爱问算法题,你不刷就不会,就会被pass.同时,刷题能陶冶情操,避免老年痴呆

  5. 金三银四 | 吃透这套题,面试更有底气

    马上迎来"金三银四"涨薪跳槽黄金季,身边的朋友都在为面试做准备,想抓住机会跳槽涨薪!所以,近段时间来咨询面试.进阶.跳槽问题的朋友也越来越多. 从二月中旬至今,共收到上百条关于面试 ...

  6. 【建议收藏】2021年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂

    一眨眼又到年底了,每到这个时候,我们都会慢慢反思,这一年都做了什么?有什么进步?年初的计划都实现了吗?明年年初有跳槽的底气了吗? 况且2020年我们经历了新冠疫情的洗礼,很多程序员都经历了失业,找工作 ...

  7. 2021年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂

    一眨眼已经到2021年了,该反思一下,2020年都做了什么?有什么进步?年初的计划都实现了吗?金三银四有跳槽的底气了吗? 2020年我们经历了新冠疫情的洗礼,很多程序员都经历了失业,找工作的恐慌.导致 ...

  8. 【金三银四】Java中间件面试题(2021最新版)

    目录 前言 Zookeeper 1. ZooKeeper 是什么? 2. ZooKeeper 提供了什么? 3.Zookeeper 文件系统 4. ZAB 协议? 5. 四种类型的数据节点 Znode ...

  9. 2021金三银四,啃完这35个Java技术栈,冲刺年薪百万!

    前言 2021金三银四,年假准备跳槽的小伙伴注意了,小编在这里为你们准备了Java后端必备的35个专题面试技术栈!都是小编在各个大厂总结出来的面试真题,小编这次分享涵盖了Java后端面试必问的35个技 ...

最新文章

  1. 数据中心未来会被以太网交换器商用IC占领吗?
  2. Linux 网卡驱动 PHY Mac MDIO kernel 驱动讲解 (未完待续)
  3. CodeForces - 743B Chloe and the sequence
  4. RocketMQ源码:NameSrv启动全过程详解
  5. 用户请求队列化_爬虫架构消息队列应用场景及ActiveMQ、RabbitMQ、RocketMQKafka
  6. 程序的加载和执行(一)——《x86汇编语言:从实模式到保护模式》读书笔记21
  7. replugin源码解析之replugin-plugin-gradle(插件的gradle插件)
  8. 当我们年轻的时候 (转贴)
  9. Mycat高可用架构原理_Mycat集群搭建_HA高可用集群_高可用_单表存储千万级_海量存储_分表扩展---MyCat分布式数据库集群架构工作笔记0027
  10. 《推荐系统笔记(七)》因子分解机(FM)和它的推广(FFM、DeepFM)
  11. 一个小故事来形容几个常用网络技术
  12. 金字塔测试早已过时!
  13. 验证选择每日学习总结:DropDownList是否已选择验证、存储过程参数为sql字符串问题、将截断字符串或二进制数据。\r\n语句已终止...
  14. 13.高性能MySQL --- 云端的MySQL
  15. 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
  16. 新鲜出炉的自主协同操作系统研讨会纪要
  17. Android studio 下载安装
  18. php写phalapi,PhalApi框架
  19. macbook历代_哪个是你的最爱? 历代经典Mac台式机回顾
  20. 【算法图解】——算法必备

热门文章

  1. java对象上有横线_对象bean间属性值复制:无视大小写和下划线_和横杠-
  2. 一级计算机B理论知识和答案,计算机一级B试题+理论答案 10秋06
  3. 达芬奇 - 构建数据查询API的框架
  4. 计算机网络 自顶向下 笔记
  5. 【搬运】射手播放器下载字幕存储位置及修改方法
  6. 北理工计算机系裴教授,裴明涛_北京理工大学计算机学院
  7. 数据分析京东笔记本电脑
  8. 优启通桌面只有一个计算机,优启通图文详细使用教程,优启通使用教程
  9. 短线操盘的10种方法、
  10. 【苹果相册推】增加家庭协议sendmail postfix MDA指示其AppID