Java堆栈内存总结

在Java中,主要存在四块内存空间,除了保存static类型属性的全局数据区,以及保存虽有方法定义的全局代码区之外,程序员更多的在乎内存中的另外两种区域——对象的生存空间堆(heap)和方法调用及变量的生存空间栈(stack)。当虚拟机启动时,它会从底层的操作系统取得一块内存,并以此区段来执行Java程序。至于有多少内存,以及你是否能够调整它都要看Java虚拟机与平台的版本而定。

栈内存空间

局部变量和方法的参数都是被声明在方法中。它们是暂时的,且声明周期只限于方法被放在栈上的这段期间(也就是方法调用至执行完毕为止)。

堆内存空间

实例变量事故被声明在类而不是方法里面。它们代表每个独立对象的“字段”(每个实例 都能有不同的值)。实例变量存在于所属的对象中,而对象又存在于堆中,对象的名称却是保存在栈中。

实例变量与局部变量的区别:除了在内存分配机制上的区别之外,二者在声明和初始化上也有着很大的区别。

实例变量永远都会有默认值——

integers  0

floating points 0.0

booleans false

references null

局部变量没有默认值!如果在变量初始化前就要使用的话,编译器会显示错误。

原文地址:https://www.cnblogs.com/ioveNature/p/6667566.html