java面试题网站:www.javaoffers.com
内存模型: 定义内存交互动作的一种规范(工作内存和主内存只是一种概念定义,在内存中并不是划分一块区域定义为工作/主内存)
#局部基本类型变量 存在方法栈中,局部引用类型变量存在方法栈中,引用对象存在堆内存中
#成员变量 都在堆内存中,无论基础类型还是引用类型
#线程访问成员变量,都是以copy 方式进行读取。
#局部变量表所需的内存空间在编译期间完成分配,当进入一个方法时,这个方法需要在帧中分配多大的局部变量空间是
完全确定的,在方法运行期间不会改变局部变量表的大小
附加知识:在JDK 1.4中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的
I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作
为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在Java堆和Native堆中来回复制数据
参考:http://tutorials.jenkov.com/java-concurrency/java-memory-model.html
jvm 虚拟机高级特性与最佳实践