jdk1.7.0_79 众所周知,Java是一门不用程序员手动管理内存的语言,全靠JVM自动管理内存,既然是自动管理,那必然有一个垃圾内存的回收机制或者回收算法。本文将介绍几种常见的垃圾回收(下文简称GC)算法。 在Java堆上分配一个内存给实例对象时,此时在虚拟机栈上引用型变量就会存放这个实例对象 ...
分类:
编程语言 时间:
2017-07-13 21:53:22
阅读次数:
241
标记-清除 标记-清除算法是现代垃圾回收算法的思想基础。标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。一种可行的实现是,在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象。因此,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象 标记-整理 根据老年代... ...
分类:
编程语言 时间:
2017-07-08 21:01:56
阅读次数:
217
15 Java虚拟机是一个进程,因此符合操作系统进程的特征,且是多线程的。整个虚拟机脱离不开操作系统的约束。 java虚拟机运行时运行结构图: 一个进程包含多个线程。有些数据在线程中是共享的。 java虚拟机将内存划分为不同的区域,有些是在java虚拟机启动的时候就存在了,有些事随着线程的生成和销毁 ...
分类:
编程语言 时间:
2017-07-03 22:25:53
阅读次数:
282
常用垃圾回收算法 今天我关于常见的垃圾回收算法来做个总结,我们最常听到的是Java虚拟机里的垃圾回收机制,其实垃圾回收的概念最先并不是Java里首先提出来的, 垃圾回收这个概念很早就已经被提出来了,并且已经在其他语言中得到了应用。 关于垃圾回收的机制,这里不再解释,这篇文章我主要介绍常见的垃圾回收算 ...
分类:
编程语言 时间:
2017-06-29 20:45:56
阅读次数:
174
JVM的垃圾回收算法有三种: 1.标记-清除(mark-sweep):啥都不说,直接上图 2.标记-整理(mark-compact) 3.复制(copy) 分代收集算法 目前的垃圾回收都采用分代收集算法.也就衍生了很多垃圾收集器 “分代收集”(Generational Collection)算法,把 ...
分类:
编程语言 时间:
2017-06-28 00:26:10
阅读次数:
396
JVM的基本结构和JVM的内存结构 这里介绍一下JVM在启动后,作为操作系统的一个进程的基本结构,以及从操作系统角度看,JVM如何管理它从操作系统里申请来的内存的,也就是JVM的内存结构或者叫JVM内存模型。 1、JVM的基本结构 JVM启动后,对操作系统来说,JVM是一个的进程,这个进程的基本结构 ...
分类:
其他好文 时间:
2017-06-27 18:47:12
阅读次数:
125
1、垃圾收集算法(方法论): 定义:JVM通过GC来回收堆和方法区中的内存。 GC的基本原理:首先会找程序中不再被使用的对象;然后回收这些对象所占用的内存。 算法分类: (1) 按照基本回收策略分: <1>引用计数(Reference Counting): 比较古老的回收算法。原理是此对象有一个引用 ...
分类:
编程语言 时间:
2017-06-24 18:35:54
阅读次数:
215
以下配置主要针对分代垃圾回收算法而言: 1、堆大小设置: 年轻代的设置很关键JVM中最大堆大小有三方面限制: (1)相关操作系统的数据模型(32-bt还是64-bit)限制; (2)系统的可用虚拟内存限制; (3)系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无 ...
分类:
其他好文 时间:
2017-06-24 18:32:31
阅读次数:
132
此文为转载,但是笔者忘记转载自哪里,望原作者看见之后不要怪罪 1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾 ...
分类:
编程语言 时间:
2017-05-30 23:06:47
阅读次数:
191
引用计数法(java未使用) 1.很老的一个垃圾回收算法 2.通过引用计数来回收垃圾 3.引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器就减1。只要对象A的引用计数器的值为0,则对象A就不可能再被使用。 4.弊端: 引用和去引用伴 ...
分类:
编程语言 时间:
2017-05-30 19:32:52
阅读次数:
152