202109-29 分析Android常见的内存泄露和解决方案 目录一、前言二、Android内存泄露场景2.1、非静态内部类的静态实例2.2、多线程相关的匿名内部类/非静态内部类2.3、Handler内存泄露2.4、静态Activity或View2.5、Eventbus等注册监听造成的内存泄露2.6、单例引起的内存泄露2.7、资源对象没关闭造成内存泄漏2.8、WebView一、前言目前java垃圾回收主流算法是虚拟机采用GCRootsTracing算法。算法的基本思路是:通过一系列的名为GCRoots(GC根节点)的对象作为起始点,... 继续阅读 >
201801-16 每日一博 | 记一次 JVM 堆外内存泄露 Bug 的查找 解Bug之路-记一次JVM堆外内存泄露Bug的查找前言JVM的堆外内存泄露的定位一直是个比较棘手的问题。此次的Bug查找从堆内内存的泄露反推出堆外内存,同时对物理内存的使用做了定量的分析,从而实锤了Bug的源头。笔者将此Bug分析的过程写成博客,以飨读者。由于物理内存定量分析部分用到了linuxkernel虚拟内存管理的知识,读者如果有兴趣了解请看ulk3(《深入理解linux内核第三版》)内存泄露Bug现场一个线上稳... 继续阅读 >
201605-25 4类JavaScript内存泄露及如何避免 原文:4TypesofMemoryLeaksinJavaScriptandHowtoGetRidOfThem译文来自:Alon'sBlog本文将探索常见的客户端JavaScript内存泄露,以及如何使用Chrome开发工具发现问题。简介内存泄露是每个开发者最终都要面对的问题,它是许多问题的根源:反应迟缓,崩溃,高延迟,以及其他应用问题。什么是内存泄露?本质上,内存泄露可以定义为:应用程序不再需要占用内存的时候,由于某些原因,内存没有被操作系统或可用... 继续阅读 >
201412-03 如何用Java编写一段代码引发内存泄露 文本来自StackOverflow问答网站的一个热门讨论:如何用Java编写一段会发生内存泄露的代码。Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码。这个问题我一点思路都没有,好囧。A1:通过以下步骤可以很容易产生内存泄露(程序代码不能访问到某些对象,但是它们仍然保存在内存中):应用程序创建一个长时间运行的线程(或者使用线程池,会更快地发生内存泄露)。线程通过某个类加载器(可以自... 继续阅读 >
201411-07 PHP特点之垃圾回收机制1——引用计数的基本知识 每个php变量存在一个叫"zval"的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是"is_ref",是个bool值,用来标识这个变量是否是属于引用集合(referenceset)。通过这个字节,php引擎才能把普通变量和引用变量区分开来,由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制,来优化内存使用。第二个额外字节是"refcount",用以表示指向这个zval变量容器... 继续阅读 >