Java多线程编程实战指南读书笔记四
java运行时存储空间Java运行时空间可以非位堆空间,栈空间和非堆空间**。其中堆空间和非堆空间时被多个线程共享的**,而栈空间则是线程的私有空间。每个线程都有自己私有的栈空间。栈空间时为线程的执行而准备的一段固定大小的内存空间,栈空间时线程创建的时候非配的。线程的方法调用是利用栈帧。局部变量的变量之存储在栈空间中,基础类型变量和引用的类型的变量的变量值都是直接存储在栈帧中的。由于一个线程无法访问另一个线程的栈空间,所以线程堆局部变量以及对只能通过当前线程的局部变量才能访问的对象进行操作具有固有的线程安全性堆空间用于存储对象,它也时垃圾回收器工作的场所,即堆空间中没有可达引用的对象会被回收。非堆空间用于存储常量以及类的元数据等,它是Java虚拟机系统的时候分配的一段可以动态扩容的内存空间。类的元数据包括类的静态变量、类有哪些方法以及这些方法的元数据(包括名称,参数和返回值等)
