内存泄露,GC相关

内存泄露就是对象不在GC的掌控之内

下面对象会发生内存泄露现象:

1.没有引用的对象

2.虚,软,弱 引用对象

GC引用的对象指的是

  1.JavaStack中引用的对象

  2.方法区中静态引用指向的对象

  3.方法区常量引用指向的对象

  4.Native方法中JNI引用对象

  5.Thread “活着的”线程引用的对象

在memorryinfo-->memoryUsage中生成对象文件

点击Heap生成hprof文件

导出hprof文件,用Eclipse 中ma工具t打开,打开histogram

这里告诉大家,系统输入InputMethodManager有一个bug,它存在内存泄露问题

this,activity,getAppicatonContent的上下文都可能指的不是一个,getAppicationContent和static差不差,它是整个内存共用的,我记得在Fragment中出过类似写错上下文的错误!!!

时间: 2024-08-05 19:51:44

内存泄露,GC相关的相关文章

java栈内存堆内存和GC相关

java栈内存堆内存 Java把内存分成两种,一种叫做栈内存,一种叫做堆内存,有着不同的作用.栈内存用来存储局部变量和方法调用.栈内存归属于单个线程,每个线程都会有一个栈内存,其存储的变量只能在其所属线程中可见,即栈内存可以理解成线程的私有内存.而堆内存中的对象对所有线程可见.堆内存中的对象可以被所有线程访问.而堆内存用来存储Java中的对象.无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中. 引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放.而数组

java内存泄露补充例子

前几天写了个内存泄露的文章,里面介绍了内存泄露的相关知识:http://blog.csdn.net/u010590685/article/details/46973735 但是里面给的例子不是很好,今天看到一个很好的例子这里补充给大家. 假如我们自己写一个栈,下面是它的pop方法: public Object pop(){ Object object=arrays[size]; size--; return object; } 这个方法中我们可以看到pop是把当前的数组的最后一位返回回来,然后把

java内存泄露补充样例

前几天写了个内存泄露的文章.里面介绍了内存泄露的相关知识:http://blog.csdn.net/u010590685/article/details/46973735 但是里面给的样例不是非常好,今天看到一个非常好的样例这里补充给大家. 假如我们自己写一个栈.以下是它的pop方法: public Object pop(){ Object object=arrays[size]; size--; return object; } 这种方法中我们能够看到pop是把当前的数组的最后一位返回回来,然

Java虚拟机6:内存溢出和内存泄露、并行和并发、Minor GC和Full GC、Client模式和Server模式的区别

http://www.cnblogs.com/xrq730/p/4839245.html 前言 之前的文章尤其是讲解GC的时候提到了很多的概念,比如内存溢出和内存泄露.并行与并发.Client模式和Server模式.Minor GC和Full GC,本文详细讲解下这些概念的区别. 内存溢出和内存泄露的区别 1.内存溢出 内存溢出指的是程序在申请内存的时候,没有足够大的空间可以分配了. 2.内存泄露 内存泄露指的是程序在申请内存之后,没有办法释放掉已经申请到内存,它始终占用着内存,即被分配的对象可

.NET中常见的内存泄露问题——GC、委托事件和弱引用

一.什么是内存泄露(memory leak)? 内存泄露不是指内存坏了,也不是指内存没插稳漏出来了,简单来说,内存泄露就是在你期待的时间内你程序所占用的内存没有按照你想象中的那样被释放. 因此什么是你期待的时间呢?明白这点很重要.如果一个对象占用内存的时间和包含这个对象的程序一样长,但是你并不期望是这样.那么就可以认为是内存泄露了.用具体例子来说明如下: class Button { public void OnClick(object sender, EventArgs e) { ... }

Java有了GC同样会出现内存泄露问题

1.静态集合类像HashMap.Vector等的使用最容易出现内存泄露,这些静态变量的生命周期和应用程序一致,所有的对象Object也不能被释放,因为他们也将一直被Vector等应用着. Static Vector v = new Vector(); for (int i = 1; i<100; i++) { Object o = new Object(); v.add(o); o = null; } 在这个例子中,代码栈中存在Vector 对象的引用 v 和 Object 对象的引用 o .在

android内存泄露相关研究【整体看】

在android项目开发的时候,内存问题一直都是很困扰我们的常见的问题,在实际开发中,如何在开发时就很好的约束&控制内存已经成为了一件恨重要的事情了. 1.为什么要在开发时就要约束内存 因为小编从事过不同类型的APP的开发,混合式语言开发是我们现在开发中使用最常见的一种,在不同的脚本语言的时候,我们的内存产生也会不一样. 列子:下面小编就拿1)非常原生的App2)hybrid web App3)lua脚本语言APP 备注:因为本人电脑问题,不能够添加图片,具体证明类图片会在后期闲置的时间添加 结

引用,引用形参,指针形参与指向指针的引用形参,内存泄露及free相关

由做UVa133引发的一系列问题及讨论 1.引用类型    C++ Primer P51 引用就是对象的另一个名字,使用多个变量名指向同一地址.实际程序中,引用主要用作函数形参. 复合类型.不能定义引用类型的引用,但可以定义任何其他类型的引用. 格式: 类型名&  标示符=已声明的常变量; 2.引用形参    C++ Primer P201-205 非引用形参有普通的.指针形参.const形参(可传const对象或非const对象) 引用形参,3种情形:@修改实参,或返回多个值  @避免复制大型

使用gc、objgraph干掉python内存泄露与循环引用!

Python使用引用计数和垃圾回收来做内存管理,前面也写过一遍文章<Python内存优化>,介绍了在python中,如何profile内存使用情况,并做出相应的优化.本文介绍两个更致命的问题:内存泄露与循环引用.内存泄露是让所有程序员都闻风丧胆的问题,轻则导致程序运行速度减慢,重则导致程序崩溃:而循环引用是使用了引用计数的数据结构.编程语言都需要解决的问题.本文揭晓这两个问题在python语言中是如何存在的,然后试图利用gc模块和objgraph来解决这两个问题. 注意:本文的目标是Cpyth