运行时数据区域:
线程私有:
1.程序计数器
如果正在执行的方法为Native方法,程序计数器值为空。
2.java虚拟机栈
虚拟机栈描述java方法执行的内存模型:每个方法被执行时会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口。从方法的调...
分类:
编程语言 时间:
2015-03-09 17:40:15
阅读次数:
151
public class TestJVM { // 运行时数据区【方法区、堆、程序计数器、虚拟机栈、本地方法栈】 private static int _1M = 1024 * 1024; public static void main(String[] args) { by...
分类:
其他好文 时间:
2015-03-08 18:32:26
阅读次数:
134
可达性分析算法
来判断对象是否存活。这个算法的基本思路是通多一系列的称为“gc roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到gc roots没有任何引用链项连时(图论来说,从gc到这个对象不可达),则证明此对象是不可用的。
JAVA语言中,可作为gc roots的对象包括下面几种:
虚拟机栈(栈帧中的本地变量表)中引用的对象。
方法区中类静态属性...
分类:
其他好文 时间:
2015-02-09 12:57:44
阅读次数:
138
我们前面所讲的一切其实都只是为了一个目标那就是能正确发布一个线程安全的对象。
一:线程封闭
这个很好理解如果一个变量是在一个线程中完成的状态改变,那么这个变量肯定是线程安全的。
我们常使用的是栈封闭和ThreadLocal类。
在java运行时内存区中有一个虚拟机栈,栈封闭说的就是这个栈,这个栈是线程私有的,它的生命周期与线程相同。虚拟机栈描述描述的是java方法执行的内存模型:每个方法被...
分类:
编程语言 时间:
2015-02-02 07:10:09
阅读次数:
215
主存储器和工作存储器Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域,这些区域包括方法区,堆,虚拟机栈,本地方法栈,程序计数器。方法区存储类信息,常量,字节码等数据,堆内存存储所有生成的对象,方法区和堆内存为所有线程共享,而虚拟机栈是每个线程独有的,也就是说每个线程...
分类:
编程语言 时间:
2015-02-01 20:17:58
阅读次数:
263
虚拟机栈溢出(如果虚拟机在扩展时无法申请到足够的内存空间将抛出OutOfMemoryError)package com.jvm.memory;
import java.util.ArrayList;
import java.util.List;
public class HeapOOM {
/**
* VM 运行时参数 -Xms20m -Xmx20m -XX:+HeapDumpOnOu...
分类:
编程语言 时间:
2014-12-30 22:12:02
阅读次数:
268
JAVA运行时数据区域 1、程序计数器:当前线程所执行的字节码的行号指示器。一个处理器只会执行一条线程中的指令,为了线程切换后能回复到正确的执行位置,所以每条线程都需要一个独立的计数器。各条线程之间互不影响,独立存储,属于‘线程私有’内存。 2、java虚拟机栈:描述的是JAVA方法执行的内存模型....
分类:
其他好文 时间:
2014-12-25 18:19:59
阅读次数:
170
[last updated :2014/11/7]
JVM运行时数据区(JVM Runtime Area)其实就是指JVM在运行期间,其对计算机内存空间的划分和分配。本文将通过以下几个话题来讨论JVM运行时数据区。
Topic 1. JVM运行时数据区里有什么?Topic 2. 虚拟机栈 是什么?虚拟机栈里有什么?Topic 3.栈帧是什么?栈帧里有什么?Topic ...
分类:
编程语言 时间:
2014-12-18 15:18:14
阅读次数:
178
栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
每一个栈帧都包括了局部变量表,操作数栈,动态连接,方法返回地址和一些额外的...
分类:
编程语言 时间:
2014-12-14 13:18:31
阅读次数:
227
本篇主要介绍一下,JVM运行时数据区的内容。
首先大概介绍一下下图所示的内容。JVM运行时数据区主要分为了两大部分的内容:线程共有的方法区(Method Area)和堆(Heap)、线程私有的虚拟机栈(VM Stack),本地方法栈(Native Method Stack)和程序计数器(Program Counter Register)。在数据区下面的执行引擎中又包含了:即时编译器(JITCom...
分类:
其他好文 时间:
2014-12-10 21:21:10
阅读次数:
267