http://jingyan.baidu.com/article/ce09321b620a3d2bff858ff5.html简单使用:分析三步曲:通常我们都会采用下面的“三步曲”来分析内存泄露问题:首先,对问题发生时刻的系统内存状态获取一个整体印象。第二步,找到最有可能导致内存泄露的元凶,通常也就是消耗内存最多的对象..
分类:
系统相关 时间:
2017-08-08 20:03:34
阅读次数:
222
3.1.引用计数法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。但是,至少主流的Java虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是它很难解决对象之间相互..
分类:
其他好文 时间:
2017-08-08 20:02:24
阅读次数:
183
4.1.对象优先在Eden分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次MinorGC。新生代GC(MinorGC):指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以MinorGC非常频繁,一般回收速度也比较快。老年代..
分类:
其他好文 时间:
2017-08-08 19:53:58
阅读次数:
116
http://www.cnblogs.com/fryy/archive/2013/11/27/3445281.html内存泄漏指你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态内存溢出指你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出要点内存泄..
分类:
其他好文 时间:
2017-08-08 19:51:39
阅读次数:
130
2.1:概述对于从事C、C++程序开发的开发人员来说,对象的新建内存区域和销毁内存区域(new和delete)都是由程序员手动调用的。java的内存管理是由虚拟机自动执行的。一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会成为一项异常艰难的工..
分类:
编程语言 时间:
2017-08-08 19:37:45
阅读次数:
238
本次阅读基于jdk1.71.1.java虚拟机类别和发展史:SunClassic/ExactVM:世界上第一款商用Java虚拟机,Sun公司发布JDK1.0,Java语言首次拥有了商用的正式运行环境,这个JDK中所带的虚拟机就是ClassicVMSunHotSpotVM:提起HotSpotVM,相信所有Java程序员都知道,它是SunJDK和OpenJDK..
分类:
编程语言 时间:
2017-08-08 19:33:20
阅读次数:
154
一、基本垃圾回收算法 1. 按基本回收策略分 1) 引用计数(Reference Counting) 对象增加一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 2)标记-清除(Mark-Sweep) 执行分两阶段。第一 ...
分类:
编程语言 时间:
2017-08-07 22:28:06
阅读次数:
312
Overview 垃圾收集考虑三件事: 哪些内存需要回收? 什么时候回收? 如何回收? 重点考虑Java堆中动态分配和回收的内存。 Is Object alive? 引用计数法 给对象添加一个引用计数器。 该方法实现简单,判定效率高。但是它很难解决对象之间相互循环引用的问题,因此几乎很少有JVM选用 ...
分类:
编程语言 时间:
2017-08-05 18:54:23
阅读次数:
198
一、堆与栈 堆和栈是程序运行的关键,其间的关系有必要理清楚,两者如下图所示: 1. 堆: 所有线程共享,堆中只负责存储对象信息。 2. 栈: 在Java中每个线程都会有一个相应的线程栈与之对应(因为不同的线程执行逻辑有所不同,因此需要一个独立的线程栈),栈是运行单位,因此里面存储的信息都是跟当前线程 ...
分类:
编程语言 时间:
2017-08-04 18:17:28
阅读次数:
105
第一章:走进Java 概述 Java技术体系 Java发展史 Java虚拟机发展史 1996年 JDK1.0,出现Sun Classic VM HotSpot VM, 它是 Sun JDK 和 OpenJDK 中所带的虚拟机,最初并不是Sun开发 Sun Mobile- Embedded VM/ M ...
分类:
编程语言 时间:
2017-08-01 23:13:19
阅读次数:
233