JVM的并发问题
Java内存模型 1.程序,进程,线程的基本概念? 1.程序:是指完成某一项任务的代码序列(静态的概念) 2.进程:程序在某些数据上的一次运行(动态概念) 3.线程:一个进程可能包含一个或者多个线程(占有资源的独立单元) 2.JVM的内存区域? JVM内存模型 VMstack 1.方法区: 主要存储类信息(通过classLoader:类加载器加载进来的),常量信息,使用static关键字修饰的属性,方法,代码块 等。当使用反射原理进行类加载时其实就是调用的方法区的数据。( 信息共享 ) 2.Java堆区: 主要存放实例对象,当使用new关键字创建一个对象的时候,就会把相关信息放在堆区域,所以这也是GC活动的主要区域,同时也是发生OOM(内存溢出)的主要区域。( 信息共享 ) 3.VMstack(虚拟机栈): Java方法运行的内存模型,在VMstack中,每一个方法都有唯一的一个栈帧与之对应,存放这个方法的一些私有信息,比如:局部变量,引用类型数据的地址,操作数栈等...。因为是存储一个方法的信息,所有 不能实现数据共享 ,是 私有 的。 4.PC(程序计数器): 是Java的私有数据,这个数据就是执行下一条指令的地址。( 私有的 ) 5.Native method stack(本地方法栈): 与JVM的native。(