JAVA变量的存放位置

JAVA变量(包括常量)可以存放在 栈、堆、方法区三块内存区域,除去方法区的常量池中存放的常量之外主要的变量都存放在栈和堆中。

其中栈中的变量会受线程的影响(线程私有),当线程结束时变量销毁

堆中的变量则是线程共享的,由 gc 处理。

变量的存储位置跟变量的类型和变量的作用域有关,如下:

  局部变量  全局变量
基本数据类型 变量名和值都存放在栈中 变量名和值都存在在堆中
引用数据类型 变量名存放在栈中,值存放在堆中