在上篇文章中了解了什么是「Android 开发中的内存泄漏」,这篇来记录一下在 Android App 开发中可以用什么工具来帮助开发者发现以及消除内存泄漏
Android Studio Profiler 工具
Android Studio 作为官方的 Android App 开发 IDE,功能越来越强大,从 Android Studio 3.0 开始提供 Profiler 来对 App 的 CPU、内存、网络、电量进行检测,帮助开发者发现 App 运行时潜在的问题

在上篇文章中了解了什么是「Android 开发中的内存泄漏」,这篇来记录一下在 Android App 开发中可以用什么工具来帮助开发者发现以及消除内存泄漏
Android Studio 作为官方的 Android App 开发 IDE,功能越来越强大,从 Android Studio 3.0 开始提供 Profiler 来对 App 的 CPU、内存、网络、电量进行检测,帮助开发者发现 App 运行时潜在的问题

程序中动态分配的内存因为某种原因未释放或无法释放
通俗的讲,就是一个长生命周期对象 A 持有了一个短生命周期 B 对象的引用,导致 B 销毁时无法被 GC 回收,造成的内存浪费。
在 Android 开发中免不了需要通过 Gradle 进行远程依赖官方库或者第三方 SDK,相信大家遇到过这样一个痛点,这个远程依赖本身也依赖了其他第三方库,而工程可能因为兼容性考虑,需要的的不是这个版本,以下举例一个场景:
依赖 Retrofit 最新版本:
1 | implementation "com.squareup.retrofit2:retrofit:2.9.0" |
通过终端输入指令:
macOS:
1 | ./gradlew [module_name]:dependencies |
Windows:
1 | gradlew [module_name]:dependencies |
以上 [module_name] 换成需要打印的模块名,比如 app
在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:
请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。
你需要原地修改栈。
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。
若队列为空,pop_front 和 max_value 需要返回 -1
给定一个包含正整数、加(+)、减(-)、乘()、除(/)的算数表达式(括号除外),计算其结果。
表达式仅包含非负整数,+, - ,,/ 四种运算符和空格 。 整数除法仅保留整数部分。
说明:你可以假设所给定的表达式都是有效的。请不要使用内置的库函数 eval。
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)
给你两个「非空」的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。