JMM

2019/10/10 posted in  Java

JVM将内存划分为五大块:

  • 堆 (进城内所有线程共享)
  • 方法区(进程内所有线程共享)
  • 虚拟机栈(每个线程独立)
  • native本地方法栈(每个线程独立)
  • pc计数器(每个线程独立) Java中基础数据类型是在栈上分配还是在堆上分配?
    我们继续深究一下,基本数据类占用内存大小是固定的,那具体是在哪分配的呢,是在堆还是栈还是方法区?大家不妨想想看!
    要解答这个问题,首先要看这个数据类型在哪里定义的,有以下三种情况。

如果在方法体内定义的,这时候就是在栈上分配的
如果是类的成员变量,这时候就是在堆上分配的
如果是类的静态成员变量,在方法区上分配的