JVM内存由几个部分组成:堆、方法区、栈、程序计数器、本地方法栈
JVM垃圾回收仅针对公共内存区域,即:堆和方法区进行,因为只有这两个区域在运行时才能知道需要创建些对象,其内存分配和回收都是动态的。
一、垃圾回收策略
1.1分代管理
将堆和方法区按照对象不同年龄进行分代:
(Young Generation and Old Gene...
分类:
编程语言 时间:
2016-05-12 21:51:40
阅读次数:
256
最近看了周志明版本的《深入理解Java虚拟机》第一版和第二版,写的很好,收获很多,此处总结一下。 jvm中内存划分: 如上图,一共分为五块,其中: 线程共享区域为: 1、java堆 2、方法区 线程私有区域为: 3、JVM栈 4、本地方法栈 5、程序计数器 各区域作用: 1、java堆: java堆 ...
分类:
其他好文 时间:
2016-05-11 14:47:56
阅读次数:
116
今天我们将一起学习Java虚拟机使用垃圾收集算法和常见的垃圾收集器。Java虚拟机内存区域的程序计数器、虚拟机栈和本地方法栈3个区域是随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出出栈和入栈。每一个栈帧中分配多少内存基本上是在类结构确定下来的时候就已知的,因此这个几个区域的内存分配和回收都具备确定性,在这几个区域就不需要过多考虑回收问题,因为方法结束或者线程结束时,内存自然就跟着回收了。而...
分类:
编程语言 时间:
2016-05-07 10:21:51
阅读次数:
328
JVM具有自动内存管理机制,Java不需要像c/c++一样,为每一个new操作写配对的delete/free代码,不容易出现内存泄露和溢出。JVM内存区域主要包括如下部分:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。程序计数器程序计数器可以视为当前线程所执行的字节码行号指示器,如果当前执行的是Native方法,计数器的值为空(Undefined)。在JVM的概念模型中,字节码解释器...
分类:
编程语言 时间:
2016-05-06 15:18:53
阅读次数:
187
大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) , VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack ( 本地方法栈 ),其 ...
分类:
其他好文 时间:
2016-04-29 22:17:41
阅读次数:
238
内存的划分本文所谈的内存是指的运行时数据区域,分为:
共享的数据区:
堆(Heap)
方法区(Method Area)
线程隔离的数据区:
虚拟机栈(VM Stack)
本地方法栈(Native Method Stack)
程序计数器(Program Counter Register)
Java线程栈的内存管理(隔离内存)线程隔离的性质意味着线程和栈是关联的,每个线程在创建时会创建自己的...
分类:
其他好文 时间:
2016-04-29 19:25:32
阅读次数:
149
内存的划分本文所谈的内存是指的运行时数据区域,分为:
共享的数据区:
堆(Heap)
方法区(Method Area)
线程隔离的数据区:
虚拟机栈(VM Stack)
本地方法栈(Native Method Stack)
程序计数器(Program Counter Register)
Java线程栈的内存管理(隔离内存)线程隔离的性质意味着线程和栈是关联的,每个线程在创建时会创建自己的...
分类:
其他好文 时间:
2016-04-26 21:32:06
阅读次数:
167
java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,小菜早就对常量池有所耳闻,这次好好总结一下。 理论 小菜先拙劣的表达一下jvm虚拟内存分布: 程序计数器是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。 本地方法栈是jvm调用操作系统方法所使用的栈。 虚拟机栈是j ...
分类:
编程语言 时间:
2016-04-24 18:53:00
阅读次数:
149
Java虚拟机垃圾收集器与内存分配策略概述
那些内存需要回收,什么时候回收,如何回收是GC需要完成的3件事情。
程序计数器,虚拟机栈与本地方法栈这三个区域都是线程私有的,内存的分配与回收都具有确定性,内存随着方法结束或者线程结束就回收了。
java堆与方法区在运行期才知道创建那些对象,这部分内存分配是动态的,本章笔记中分配与回收的内存指的就是:java堆与方法区。
判断对象已...
分类:
编程语言 时间:
2016-04-19 19:47:33
阅读次数:
225
Java虚拟机的内存模型分为五个部分,分别是:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区。这五个区域既然是存储空间,那么为了避免Java虚拟机在运行期间内存存满的情况,就必须得有一个垃圾收集者的角色,不定期地回收一些无效内存,以保障Java虚拟机能够健康地持续运行。这个垃圾收集者就是平常我们所说的“垃圾收集器”,那么垃圾收集器在何时清扫内存?清扫哪些数据?这就是接下来我们要解决的问题。...
分类:
其他好文 时间:
2016-04-19 19:39:38
阅读次数:
156