java 内存结构

转载 2011年01月18日 10:35:00

from: http://yidianfengfan.javaeye.com/blog/803329

jmm内存结构

 

 

1. Heap(堆):实例分配的地方,通过-Xms与-Xmx来设置 
    2. MethodArea(方法区域):类的信息及静态变量。 对应是Permanet Generation, 通过-XX:PermSize来设置 
    3. JavaStack(java的栈):虚拟机只会直接对Javastack执行两种操作:以帧为单位的压栈或出栈。通过-Xss来设置, 若不够会抛出StackOverflowError 
    4. ProgramCounter(程序计数器):每一个线程都有它自己的PC寄存器,也是该线程启动时创建的。PC寄存器的内容总是指向下一条将被执行指令的饿地址,这里的地址可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。 
    5. Nativemethodstack(本地方法栈):保存native方法进入区域的地址 

当中Heap和MethodArea是被所有线程的共享使用的; 
而Javastack,Programcounter和Nativemethodstack是以线程为粒度的,每个线程独自拥有自己的部分 

二、 内存模型 
由以上可以知道java内存分为main memory和线程的Working Memory,就会涉及到这两种内存数据同步以及多个线程操作时数据一致性和可见性的问题。这就不可避免要加锁了,在java中可采用如下的形式: 

1.  synchronized关键字或使用java.util.concurrent.locks中的锁 
2.  volatile关键字 Volatile表示的是线程每次操作都是在主内存中进行, 这只能保证其可见性, 而不能保证其的原子性, 要有原子性还得加锁 
3.  final变量(基本类型,类类型还是可以改值的) 

(3) Java内存结构

Java的运行时数据区,也就是Java的内存结构(Java Structure),但注意区分Java的内存模型(Java Memory Model,JMM),JMM现在我还没仔细去研究过,有兴趣的同学...
  • a327369238
  • a327369238
  • 2016年08月02日 15:49
  • 1112

Java虚拟机详解----JVM内存结构

http://www.cnblogs.com/smyhvae/p/4748392.htm 主要内容如下: JVM启动流程JVM基本结构内存模型编译和解释运行的概念   ...
  • bluetjs
  • bluetjs
  • 2016年10月20日 17:10
  • 7859

Simple Java—Compiler and JVM(一)Java对象运行时的内存结构

Java中的动态绑定,多态实现机制
  • z55887
  • z55887
  • 2016年01月31日 15:31
  • 375

JVM体系结构-----深入理解内存结构

一、概述        内存在计算机中占据着至关重要的地位,任何运行时的程序或者数据都需要依靠内存作为存储介质,否则程序将无法正常运行。与C和C++相比,使用Java语言编写的程序并不需要显示的为每...
  • ljheee
  • ljheee
  • 2016年08月17日 00:42
  • 2505

深入理解java虚拟机(一):java内存区域(内存结构划分)

图一:java内存结构划分 由上图可知,java内存主要分为6部分,分别是程序计数器,虚拟机栈,本地方法栈,堆,方法区和直接内存,下面将逐一详细描述。 1、程序计数器 线程私有,即每个线程都会有一个...
  • MINEZHANGHAO
  • MINEZHANGHAO
  • 2014年02月18日 17:45
  • 20454

java中内存结构及堆栈详解

一、 java内存结构   1. Heap(堆):实例分配的地方,通过-Xms与-Xmx来设置   2. MethodArea(方法区域):类的信息及静态变量。 对应是Permanet Gener...
  • Magneto7
  • Magneto7
  • 2013年09月17日 17:38
  • 1452

JVM的内存结构和GC机制

1. Jvm的内存可以分为堆内存和非堆内存 1)   堆内存 Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。 Java所以实例和数组的内存均在此处分配。对象的对内存 java...
  • wangyang665
  • wangyang665
  • 2014年08月09日 19:21
  • 348

Java8---底层内存结构方法区

方法区: jvm运行时内存区域主要分为:程序计数器,jvm栈,本地方法栈,堆,方法区。 jvm规把方法区描述为堆的逻辑结构(即永久区PermGen)但是他还有个别名,叫Non-Heap(非堆),目...
  • u012813201
  • u012813201
  • 2017年04月05日 15:53
  • 1292

虚拟机内存结构概述

每一个线程都有一个程序计数器(Program Counter Register),如果线程正在执行的是一个java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是native...
  • u012715840
  • u012715840
  • 2017年05月06日 12:14
  • 207

JVM内存结构图解

一 真实系统中的概念   JVM(Java Virtual Machine),顾名思义是对真实计算机系统的模拟,正因如此才能屏蔽物理机器的变化,从而实现“一次编译,到处运行”。   相信很多Jav...
  • coffeelifelau
  • coffeelifelau
  • 2016年09月14日 08:44
  • 1687
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 内存结构
举报原因:
原因补充:

(最多只允许输入30个字)