- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 LeakCanary 导入到我的项目中,以了解我内部有哪些内存泄漏以及有多少内存泄漏,然后能够修复它们。我注意到这两个我无法修复。更好地说,我不知道如何用代码来解决它们。有人知道如何给我一些建议吗?
LeakCanary: 2 APPLICATION LEAKS
LeakCanary: References underlined with "~~~" are likely causes.
LeakCanary: Learn more at https://squ.re/leaks.
LeakCanary: 16523886 bytes retained by leaking objects
LeakCanary: Signature: 4594f3337285a2a3dd854a7bf9c944f5598ae18b
LeakCanary: ┬───
LeakCanary: │ GC Root: Global variable in native code
LeakCanary: │
LeakCanary: ├─ android.app.LoadedApk$ServiceDispatcher$DeathMonitor instance
LeakCanary: │ Leaking: UNKNOWN
LeakCanary: │ Retaining 144 bytes in 4 objects
LeakCanary: │ ↓ LoadedApk$ServiceDispatcher$DeathMonitor.this$0
LeakCanary: │ ~~~~~~
LeakCanary: ├─ android.app.LoadedApk$ServiceDispatcher instance
LeakCanary: │ Leaking: UNKNOWN
LeakCanary: │ Retaining 622 bytes in 8 objects
LeakCanary: │ mContext instance of com.example.packagename.ApplicationContext
LeakCanary: │ ↓ LoadedApk$ServiceDispatcher.mConnection
LeakCanary: │ ~~~~~~~~~~~
LeakCanary: ├─ com.android.billingclient.api.BillingClientImpl$zza instance
LeakCanary: │ Leaking: UNKNOWN
LeakCanary: │ Retaining 41 bytes in 3 objects
LeakCanary: │ ↓ BillingClientImpl$zza.zzd
LeakCanary: │ ~~~
LeakCanary: ├─ com.example.packagename.fragments.ShopFragment$setupBillingClient$1 instance
LeakCanary: │ Leaking: UNKNOWN
LeakCanary: │ Retaining 12 bytes in 1 objects
LeakCanary: │ Anonymous class implementing com.android.billingclient.api.BillingClientStateListener
LeakCanary: │ ↓ ShopFragment$setupBillingClient$1.this$0
LeakCanary: │ ~~~~~~
LeakCanary: ╰→ com.example.packagename.fragments.ShopFragment instance
LeakCanary: Leaking: YES (ObjectWatcher was watching this because com.example.packagename.fragments.ShopFragment received
LeakCanary: Fragment#onDestroy() callback and Fragment#mFragmentManager is null)
LeakCanary: Retaining 16523886 bytes in 33489 objects
LeakCanary: key = b2ebfeff-4177-4587-b7f5-e4c89bc4afaa
LeakCanary: watchDurationMillis = 40425
LeakCanary: retainedDurationMillis = 35424
LeakCanary: 2804 bytes retained by leaking objects
LeakCanary: Signature: 71c80305d50d16354a6bec910e7f529c72e4296
LeakCanary: ┬───
LeakCanary: │ GC Root: Local variable in native code
LeakCanary: │
LeakCanary: ├─ android.os.HandlerThread instance
LeakCanary: │ Leaking: NO (PathClassLoader↓ is not leaking)
LeakCanary: │ Thread name: 'queued-work-looper'
LeakCanary: │ ↓ HandlerThread.contextClassLoader
LeakCanary: ├─ dalvik.system.PathClassLoader instance
LeakCanary: │ Leaking: NO (ViewDataBinding↓ is not leaking and A ClassLoader is never leaking)
LeakCanary: │ ↓ PathClassLoader.runtimeInternalObjects
LeakCanary: ├─ java.lang.Object[] array
LeakCanary: │ Leaking: NO (ViewDataBinding↓ is not leaking)
LeakCanary: │ ↓ Object[].[881]
LeakCanary: ├─ androidx.databinding.ViewDataBinding class
LeakCanary: │ Leaking: NO (a class is never leaking)
LeakCanary: │ ↓ static ViewDataBinding.sReferenceQueue
LeakCanary: │ ~~~~~~~~~~~~~~~
LeakCanary: ├─ java.lang.ref.ReferenceQueue instance
LeakCanary: │ Leaking: UNKNOWN
LeakCanary: │ Retaining 724 bytes in 30 objects
LeakCanary: │ ↓ ReferenceQueue.head
LeakCanary: │ ~~~~
LeakCanary: ├─ androidx.databinding.ViewDataBinding$WeakListener instance
LeakCanary: │ Leaking: UNKNOWN
LeakCanary: │ Retaining 52 bytes in 2 objects
LeakCanary: │ ↓ ViewDataBinding$WeakListener.mObservable
LeakCanary: │ ~~~~~~~~~~~
LeakCanary: ├─ androidx.databinding.ViewDataBinding$LiveDataListener instance
LeakCanary: │ Leaking: UNKNOWN
LeakCanary: │ Retaining 16 bytes in 1 objects
LeakCanary: │ ↓ ViewDataBinding$LiveDataListener.mLifecycleOwner
LeakCanary: │ ~~~~~~~~~~~~~~~
LeakCanary: ╰→ com.example.packagename.fragments.InventoryFragment instance
LeakCanary: Leaking: YES (ObjectWatcher was watching this because com.example.packagename.fragments.InventoryFragment
LeakCanary: received Fragment#onDestroy() callback and Fragment#mFragmentManager is null)
如您所见,主要有 2 个漏洞,但我不确定我知道如何修复它们。
最佳答案
第一个 leaktrace 显示 ShopFragment
在 ShopFragment$setupBillingClient
中设置了一个 BillingClientStateListener
,可能是通过调用 BillingClient#startConnection()
。匿名类中的 BillingClientStateListener
实现,并引用其外部类 ShopFragment
的实例。看着 Javadoc ,似乎您需要在完成后调用 BillingClient#endConnection()
,即当 fragment 被销毁时。计费documentation根本没有提及这一点,因此您可能想要提交文档错误。
第二个泄漏跟踪显示与被销毁的 InventoryFragment 关联的 ViewDataBinding.LiveDataListener
由 ViewDataBinding.sReferenceQueue
保存在内存中(参见 sources here。事实 ViewDataBinding$WeakListener
在队列中意味着 ViewDataBinding.WeakListener
不是强可达的。ViewDataBinding.processReferenceQueue()
负责这样做,所以它看起来好像有一段时间没有被调用了。如果没有堆转储,很难确定,但这看起来像是一个 DataBinding 库错误,您应该提交一张票。
关于Android Canary 漏洞——计费和 ViewBinding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64648470/
所以我实现了ciphersaber-1 .它几乎可以工作,我可以解密 cstest1.cs1。但我无法让 cstest2.cs1 正常工作。 输出是: The Fourth Amendment to
更改 unsat 查询中断言的顺序后,它变为 sat。 查询结构为: definitions1 assertions1 definitions2 bad_assertions check-sat 我使
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我的应用程序用于使用 wifi 进行实时视频流和录制(音频和视频)。使用以下依赖项: repositories { maven { url 'https://raw.github.com/iParse
我正在使用 Delphi,并且我想在我的应用程序中使用 ActiveX 组件(用于压缩)。这会让我的程序更容易受到病毒攻击吗?我的程序是一个备份应用程序,它使用 FTP 和套接字来传输文件和消息。我的
我用这个函数来防止SQL注入(inject) function cleanQuery($string) { if(get_magic_quotes_gpc()) // prevents du
最近我在向我的 friend 解释参数化及其优势,他问我在安全性方面它比 mysqli_escape_string 有什么好处。具体来说,您能想到尽管输入字符串被转义(使用 mysqli_escape
我想我在最新版本的 Highstock 中发现了一个错误: 定义了以下 RangeSelector: rangeSelector: { buttons: [{ typ
我在阅读有关 C 语言字符串中的漏洞的文章后,发现了这段代码。谁能给我解释为什么会这样?提前致谢。 int main (int argc, char* argv[]) { char a[16];
我最近浏览了 php 等的 emacs 模式,并决定选择 nXhtml。但是,我不断收到以下错误:每当我打开一个 html 文件时,整个文件都以蓝色突出显示。不用说,这很烦人。我认为这可能是因为我的
我被分配到我公司的一个遗留 Web 应用程序,在研究源代码一两天后,我发现了一个类似于以下内容的 SQL 注入(inject)向量: mysql_query("SELECT * FROM foo WH
在坚持代码分析错误的过程中,我正在将我的属性更改为具有私有(private) setter 。然后我开始尝试更多地了解为什么。根据一些研究,MS 说 this : A writable collect
我最近开始使用 AngularJS,我想我遇到了一个奇怪的错误。 首先,这是一些工作代码: 查看: Delete Num
阅读时djangobook chapter ,我遇到了提到 csrf 漏洞的部分,其中注销链接被放置在隐藏的恶意站点中。 在我使用 django 创建的 Web 应用程序中,我使用了类似的注销链接 基
以前,在我的应用程序中,我得到了一个 NPE,并且通过在 NullPointerException 处设置断点,可以获得中断、堆栈跟踪(在“调试”窗口中)以及“变量”窗口中的当前变量。 但是,现在其他
我下载了 sponza_obj.rar (sponza.obj + sponza.mtl) 和 sponza_textures.rar Crytek 网站。看起来缺少gi_flag.tga。我在哪里可
在我的应用程序中,我们有许多用户,他们都与不同的调用中心相关。在 URL 中,有一个向后的 hack,他们可以在 ? 后面输入 call_center=number。它将引导他们进入不同的调用中心数据
我正在建立一个带有 SQL 注入(inject)漏洞的网站用于测试目的。但是,我只想配置 SQL 盲注。我有这个 PHP 代码: NEW
我们有一个 ASP.NET/C# 网站。我们的开发人员在亚洲离岸,我刚刚发现他们一直在网站前端放置原始 SQL。 我担心我们现在容易受到 SQL 注入(inject)攻击。有谁知道我如何检测网站上的漏
我正在尝试从代码运行 Microsoft Rdp 应用程序。 我有以下伪代码,SonarQube 提示命令注入(inject)漏洞 String rdpFilePath = myObject.getR
我是一名优秀的程序员,十分优秀!