JVM区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈...
分类:
其他好文 时间:
2015-10-23 13:32:33
阅读次数:
286
GC即垃圾收集器,虚拟机的必要组成部分。 不过这里说当然是,hotspot虚拟机(jvm的主要版本)的GC机制,前面说过了jvm的组成部分,那么想当然GC只需要负责方法区和堆就好了,虚拟机栈、本地方法栈、程序计数器随线程而生,随线程而死,为毛要回收内存? 先说堆,它分为新生代和...
分类:
其他好文 时间:
2015-10-13 00:15:14
阅读次数:
183
几个月前自己提问的一个问题没人回答,现在突然翻到,自己回答下:问题:比如class{private int i;}如上代码,之前一直以为基本数据类型都是放在虚拟机栈中的,最近看了《深入理解jvm》,里面说到方法内定义的基本数据类型放在帧栈里,而且栈里面的数据是线程独有的,不共享。 那么基本数据类型的...
分类:
其他好文 时间:
2015-10-12 19:04:32
阅读次数:
619
java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个区域,包含方法区域,堆,虚拟机栈,本地方法栈,程序计数器,其中方法区域和堆是所有线程共享的数据区。结构如图: 程序计数器: 占的空间较小...
分类:
编程语言 时间:
2015-09-14 00:47:41
阅读次数:
256
有人说栈区存放引用,这种说法并不准确。public void Method1(){ int i = 4; int y = 2; class1 cls1 = new class1();} java虚拟机栈是线程私有,他的生命周期与线程相同,每个方法在执行的同时都会创建一个栈帧(St...
分类:
编程语言 时间:
2015-09-11 18:54:24
阅读次数:
149
jvm内存区域程序计数器一块很小的内存空间,作用是当前线程所执行的字节码的行号指示器。java栈与程序计数器一样,java栈(虚拟机栈)也是线程私有的,其生命周期与线程相同。通常存放基本数据类型,对象引用(一个指向对象起始地址的引用指针或一个代表对象的句柄),reeturnAddress类型(指向一...
分类:
编程语言 时间:
2015-09-09 12:48:02
阅读次数:
210
1. Java内存区的构成 Java虚拟机运行时内存主要由五个部分组成: (1)方法区 方法区用于存储被虚拟机加载的类信息、常量、static变量等数据。字符串常量池就位于方法区。 (2)堆 堆用于存储对象实例,java中通new创建的对象实例就保存在堆中。 (3)虚拟机栈 虚拟机栈用于实...
分类:
编程语言 时间:
2015-09-05 00:09:01
阅读次数:
211
一、概述 上一篇文章Java内存模型提到虚拟机所管理的内存主要包括以下几个区域:程序计数器、虚拟机栈、本地方法栈、方法区和堆。其中前三个区域随线程而生死,这些区域的内存分配和回收都具有确定性。而堆和方法区则具有不确定性,只有程序处于运行期间才能知道会创建哪些对象,本文主要讨论这两个部分内存的回收。....
分类:
编程语言 时间:
2015-09-02 17:17:41
阅读次数:
173
引言Java的内存动态分配和垃圾收集的问题,都交给了JVM来处理。意注,将JVM运行数据区(虚拟机栈【栈帧】,程序计数器,堆内存)粗略的分为栈和堆(所有线程共享),回收的是堆中的对象实例。不是栈中的引用类型。
那么JVM是如何处理的?
从三个问题来分析:
1. 哪些内存需要回收?
2. 什么时候进行回收?
3. 如何回收?
注:现代收集器基本采用分代收集算法,堆分为:新生代和老年代...
分类:
其他好文 时间:
2015-08-27 13:30:06
阅读次数:
275
jvm的垃圾回收是个老生常谈的问题,在这里,我会从以下一个方面来和大家聊聊垃圾回收。
1 在哪里收垃圾?
2 哪些内容可认为是垃圾?
3 怎么回收垃圾?
4 gc报告的阅读
在哪里收垃圾
这里,我建议大家先读一下拙作: java内存管理
上图中的5部分:
虚拟机栈,本地方法栈,程序计数器三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行...
分类:
编程语言 时间:
2015-08-20 13:17:52
阅读次数:
209