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变量(基本类型,类类型还是可以改值的) 

Java内存结构

  • 2014年10月08日 16:47
  • 34KB
  • 下载

java对象在内存中的结构

  • 2011年05月05日 15:50
  • 31KB
  • 下载

如何Dump当前Java应用的内存结构,并进行分析找到占用空间最大的Class

引言:在Java应用中,对于内存的占用是一个让人头疼的问题,那在我们怀疑内存占用出现问题时,如何找到我们想要的答案,比如哪个占用了最多的内存,本文讲尝试给出一个思路。...

Java内存结构.pdf

  • 2011年11月26日 21:14
  • 396KB
  • 下载

传智播客_Java基础_Java内存结构

  • 2014年01月05日 17:11
  • 100KB
  • 下载

Java 数组在内存中的结构

翻译人员: 铁锚 翻译时间: 2013年11月12日 原文链接: What does a Java array look like in memory? Java中的数组存储两类事物: ...
  • renfufei
  • renfufei
  • 2013年11月12日 15:40
  • 14100

JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想

JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组1.概念 数组就是同一种类型数据的集合,就是一个容器数组...

Java 对象在堆中的内存结构

翻译人员: 铁锚 翻译日期: 2013年11月8日 原文链接:  What do Java objects look like in memory during run-time? 我们知道,函数每...
  • renfufei
  • renfufei
  • 2013年11月09日 19:09
  • 20292

java内存结构和对象创建的过程

原文:http://www.oschina.net/question/1758033_155995 在学到毕老师视频中介绍关于java内存结构的时候,感觉这些内容特别重要。结合视频和对《...

JVM之---Java内存结构(第二篇)

在上一篇中我们大致了解了JVM的内存结构,在本节中,我们将通过一些小实验,来验证这些内存空间的存在,并且通过内存镜像文件(dump)来分析一下内存溢出的原因。 本节的内容主要有: 1、用代码验证J...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 内存结构
举报原因:
原因补充:

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