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
  • 30KB
  • 下载

Java中的OutOfMemoryError和JVM内存结构

OutOfMemoryError在开发过程中是司空见惯的,遇到这个错误,新手程序员都知道从两个方面入手来解决:一是排查程序是否有BUG导致内存泄漏;二是调整JVM启动参数增大内存。OutOfMemor...

Java内存结构.pdf

  • 2011-11-26 21:14
  • 396KB
  • 下载

Java 内存结构

a)        运行。main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,jav...

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

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

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

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

Java的内存结构(Memory Structure)和垃圾收集(Garbage Collection)图解

JVM 内存包含如下几个部分: Heap Memory 存放Java对象 Non-Heap Memory 存放类加载信息和其它meta-dataOther 存放JVM 自身代码等 在JV...

Java虚拟机 - 体系结构 内存模型

一Java技术体系模块图 二JVM内存区域模型 方法区虚拟机栈本地方法栈堆  新生代老年代 程序计数器  三直接内存 一:Java技术体系模块图 二:JVM内存区域模型 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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