转载

线程安全与JVM内存结构

线程安全

线程安全: 就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问,直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。

  1. JVM内存结构主要有三大块:堆内存、方法区和栈

    Java堆是被所有线程共享,是Java虚拟机所管理的内存中最大的一块 Java堆在虚拟机启动时创建。

Java堆唯一的目的是存放对象实例,几乎所有的对象实例和数组都在这里。

分类:新生代和老年代;再细致一点的有Eden空间、From Survivor空间、To Survivor区。

新生代:包括Eden区、From Survivor区、To Survivor区,系统默认大小Eden:Survivor=8:1。

老年代:在年轻代中经历了N次垃圾回收后仍然存活的对象,就会被放到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象。

java虚拟机栈(stack)

Java虚拟机栈是线程私有的,它的生命周期与线程相同。

方法区(Method Area)

线程共享内存区域,用于储存已被虚拟机加载的类信息、常量、静态变量,即编译器编译后的代码,方法区也称持久代(Permanent Generation)。

3.原子操作

原子操作是指一个不受其他操作影响的操作任务单元。原子操作是在多线程环境下避免数据不一致必须的手段

原文  http://www.hechunbo.com/index.php/archives/191.html
正文到此结束
Loading...