ReferenceQueue and Rumtime.gc()
前言
内存泄漏对于日常简单的业务开发而言 很常见也不常见
(如果你还是说 Handler
那一套的话,除非你使用 Handler 做 timer
,否则 总有一个时间
会释放所谓的内部类引用的 Activity 等对象)。一般作为业务开发能制造内存泄漏的情景,我遇到的有几种(当然可能存在更多的情况):
内存泄漏对于日常简单的业务开发而言 很常见也不常见
(如果你还是说 Handler
那一套的话,除非你使用 Handler 做 timer
,否则 总有一个时间
会释放所谓的内部类引用的 Activity 等对象)。一般作为业务开发能制造内存泄漏的情景,我遇到的有几种(当然可能存在更多的情况):
Handler、Looper、MessageQueue 是老生常谈的话题了,你可能会觉得没什么好讲的啊,网上文章也一堆。
这里我有几个问题问一下,如果你都很清晰,那就完全不需要看此文。
最近看了点 MMKV 的代码,其核心就是通过 mmap 来读写文件。当然还有多进程、序列化、扩容重排 key等问题(这些随便找篇文章都有讲)。本文主要通过 mmap 实现简单的文件的读写。
前几天看到同事在讨论 动态代理
和 类加载器
的一些问题,其实这些技术无论是客户端还是后端都已经用烂掉了。
动态代理 cglib
和 jdk.Proxy
基本是 Java 后端面试的 “八股” 送分题。
Android 的应用层架构,其实一直在缓慢的进步,但是 Android 开发工程师却很少有进步。比如我,直到 2021 年才开始使用 dataBinding。
我初步在 RecyclerView 的 item 中试用了一下,感觉还是挺不错的。
最近一直都是 copy 工程师和 scapegoat 工程师
不过也发现了一些些问题,也用来警示自己以后写代码 尽量
考虑全面(人无完人···)
如下图
写 RecyclerView 的 Adapter 时,感觉到了泛型理解不够深刻,也不够熟练,看了几天的泛型文档
https://docs.oracle.com/javase/tutorial/java/generics/index.html
下面的总结均是对于文档的学习和一些代码示例的运行。
通常的代码复用是提取一个公共参数的函数,函数中的参数传的是各种不同的值。泛型也是类似,只不过泛型可以用于定义 class、interface、method 等等,泛型传递的是不同的 type。
最近一直在看 Kotlin 协程,因为以前也写过 Golang,所以试着去对比了一下,发现了很多好玩的事情。
试问下面一段代码,执行结果是什么呢?
经常看公司里的人写的一些基础库(基于 Kotlin)看不太懂,总有各种关键字和函数,不知道他们是在刻意用还是咋地,所以学一波,就从出现次数最多的 Scope Function 开始了。
最近看了一些程序语言的设计,语言的本质等等···接触到了一些神奇的名词,协变与逆变(Covariance and contravariance)
等等。