V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  shily  ›  全部回复第 9 页 / 共 36 页
回复总数  705
1 ... 5  6  7  8  9  10  11  12  13  14 ... 36  
2019-12-11 11:01:29 +08:00
回复了 hanliu 创建的主题 MacBook Pro MBP 2018 最多只能连接 2 个蓝牙设备
正常,我的也是,就这两个连的还经常断开。现在切换到有线了,但同样位置的 Windows NUC 配同样的设备,啥事没有。
2019-12-02 17:44:28 +08:00
回复了 raiz 创建的主题 Android AS 3.5 : project needs to be converted to androidx
难道我用的假的 AS ? 没有强制要求啊。
强制要求是因为你依赖的库使用了 AndroidX 了吧。
2019-11-20 10:14:27 +08:00
回复了 zhouyou457 创建的主题 问与答 智熄操作导致美亚账号被 Block,请教大家有没有解锁方法
在网页聊天,按照要求传真信用卡正反面+最新一期的账单
2019-11-19 22:08:19 +08:00
回复了 m30102 创建的主题 Android 关于 gc 和非静态内部类引起内存泄漏的疑问
@pdog18
第一个,是没有问题的,Runnable 是 OnClickListener 的内部类,所以引用关系是 $Runnable -> $OnClickListener-> Activity,检查一下生成的类可以看到引用的是 TActivity$1 即 匿名的 OnClickListener 类。

确实如你所说,分析内存泄漏时,一般优先分析最短路径,textView 的内部通过 mContext 已经引用了 Activity。
此非最短路径,分析和解决问题时均需要考虑到,为了释放 activity 引用,这两个引用链均需要在合适的时机置空。(其实是在所有的情况下都不应该把 View 放置在全局引用)
2019-11-19 17:31:04 +08:00
回复了 m30102 创建的主题 Android 关于 gc 和非静态内部类引起内存泄漏的疑问
1. 如#2 所说 『生命周期长的对象引用生命周期短的对象就会造成生命周期短的对象内存泄漏。』
如果 Thread 不需要 Activity,但因为 Runnalbe 是一个非静态内部类,会默认持有外部类的引用;非主观期望,就是泄露。
如果 Thread 需要 Activity,我就是启动一个空的 Activity,来执行,也不占用大量的资源,主观期望,就不是泄露了。

2. 循环依赖(持有环:TActivity->textView->$OnClickListener->TActivity ),GC 是能发现和处理循环依赖,依然可以进行回收;
如果你把 textView 对象传递给外部的对象,比如一个单例对象持有,就会导致整个环均无法被回收。

3. 没有点击的情况下,Thread 对象和 匿名的 Runnable 对象均未创建,当然没有泄露。
在此场景下,假设点击行为发生,持有链为 $Runnable -> $OnClickListener-> Activity。

需要注意:
类与对象的关系,针对第三种场景,就是类有依赖,但对象未创建。
我们讨论内存泄露时,考虑的是对象间的引用关系,对象间的引用关系是由类来表达的。


关于 #3
不是栈,是引用链,方法栈会导致引用关系,但不是一一对应。

方法完成后,Runnble 对象已经没有其他对象引用了,可以被回收,进而它所引用的 activity 等资源也可以被回收。

已经泄露的对象,可以通过切断持有关系来让 GC 回收。以 OnClickListener 为例,如果我在 onCreate 中把 textView 放到一个单例的对象中持有,那么这个 TActivity 就会有一条引用关系 Root-> Singleton->textView->$OnClickListener->activity,导致 TActivity 泄露。

如果是:
public final class Singleton {
private Singleton() {

}

public static final Singleton INSTANCE = new Singleton();

public View holder;
}

那么,下一次再次进入 TActivity 时,新的 textView 对象被赋予 holder 时,原持有的 textView 和 原 TActivity 可以被回收。
2019-11-01 22:35:36 +08:00
回复了 FakeLeung 创建的主题 程序员 大家对于中文变量名是如何看待的?
@linvaux 不是拉出去弹死?
2019-10-31 09:58:02 +08:00
回复了 iiduce 创建的主题 分享发现 发现(小米)手机一个有意思的功能
关机闹钟而已,人类真会加戏
2019-10-21 16:44:58 +08:00
回复了 jstony 创建的主题 Android android 上有没有能实现自动分流的方法?
关键在于两个卡不可以同时走流量。
2019-10-13 21:26:43 +08:00
回复了 PlainTech 创建的主题 程序员 一些好看的 IDEA 主题推荐✨
不试试 3.5 新出的 dark purple ?
2019-10-08 15:10:14 +08:00
回复了 tzm41 创建的主题 macOS macOS Catalina 正式版已发布
@lnkn 不需要重复下载,我是重启一下,拉取到 null 对应的信息,直接就可以更新了,没有二次下载。

本来也是提示又下载一次。
1 ... 5  6  7  8  9  10  11  12  13  14 ... 36  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5504 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 07:07 · PVG 15:07 · LAX 23:07 · JFK 02:07
Developed with CodeLauncher
♥ Do have faith in what you're doing.