Java的运行数据区域分为:程序计数器、方法区、本地方法栈、虚拟机栈、堆、运行时常量池。 程序计数器:从字面意思上很容易理解错误(第一眼看见我还以为仅仅是Count计数器),其实它的作用是保存字节码指令,即CPU需要哪种操作,便改变这个程序计数器的值来选取下一条字节码指令,分支、循环、跳转、异...
分类:
编程语言 时间:
2014-12-01 22:06:57
阅读次数:
160
最近闲着没事又拿起《深入理解JAVA虚拟机》拜读了一遍。对JVM的理解更深了,今天先总结一下JVM内存的结构。JVM 内存分为几个区域:程序计数器虚拟机栈本地方法栈方法区堆其中程序计数器,虚拟机栈,本地方法栈是线程私有的。 方法区和堆是线程共享的。程序计数器程序计数器是一小块内存空间,存储着当前线程...
分类:
其他好文 时间:
2014-11-27 18:12:07
阅读次数:
156
JVM运行时数据区的内存模型由五部分组成:【1】方法区【2】堆【3】JAVA栈【4】PC寄存器【5】本地方法栈对于String s = "haha" ,它的虚拟机指令:0: ldc #16; //String haha 2: astore_1 3: return对于上面虚拟...
分类:
编程语言 时间:
2014-11-20 11:55:33
阅读次数:
146
内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Ja...
分类:
编程语言 时间:
2014-10-15 13:58:11
阅读次数:
217
Java虚拟机的内存区域中,程序计数器、虚拟机栈和本地方法栈三个区域是线程私有的,随线程生而生,随线程灭而灭;栈中的栈帧随着方法的进入和退出而进行入栈和出栈操作,每个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这三个区域的内存分配和回收都具有确定性。垃圾回收重点关注的是堆和方法区部分的...
分类:
编程语言 时间:
2014-10-09 16:21:48
阅读次数:
304
运行时数据区:程序计数器:当前线程所执行的字节码的行号指示器,如果正在执行的是Native方法,这个计数器值则为空。Java虚拟机栈:用于存储局部变量表(基本数据类型、对象引用和returnAddress类型)、操作数栈、动态链接、方法出口等信息,是线程私有的,它的生命周期与线程相同。本地方法栈:N...
分类:
编程语言 时间:
2014-09-27 10:37:49
阅读次数:
189
java内存分类:栈内存和堆内存 堆内存:方法区和堆内存,其中方法区是作为堆内存的一个逻辑区域,又称为非堆,目的是与java堆内存区分开来。方法区和堆内存是所有线程共享的的区域。 其中栈内存又分为:虚拟机栈,本地方法栈,程序计数器 虚拟机栈:描述java方法的内存模型,在执行java方法...
分类:
编程语言 时间:
2014-09-23 00:18:03
阅读次数:
289
jvm虚拟机栈:一个是线程独有的,每次启动一个线程,就创建一个jvm虚拟机栈,线程退出的时候就销毁。这里面主要保存线程本地变量名和局部变量值。本地方法栈:调用本地jni方法的时候而创建的。这里分配的jvm之外的内存空间。方法调用结束之后销毁。pc寄存器:这个保存线程当前..
分类:
其他好文 时间:
2014-09-09 13:48:59
阅读次数:
227
先看一眼JVM虚拟机运行时的内存模型:
1.方法区 Perm(永久代、非堆)
2.虚拟机栈
3.本地方法栈 (Native方法)
4.堆
5.程序计数器
1 首先的问题是:jvm如何知道那些对象需要回收 ?
目前两种标识算法、三种回收算法、两种清除算法、三种收集器
引用计数法
每个对象上都有一个引用计数,对象每被引用一次,引...
分类:
其他好文 时间:
2014-09-07 21:13:05
阅读次数:
363
jvm运行时数据区的简单介绍
JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。
其中本文涉及到的主要有:java虚拟机站(简称java栈),java堆和方法区。
这里简单地普及一下这三种数据区的知识,java栈的读取速度是最快的(紧次与CPU的寄存器,跨平台性比寄存器好,android使用的是寄存器),但是里面...
分类:
其他好文 时间:
2014-08-18 13:09:22
阅读次数:
215