java中堆栈的一些理解备忘

堆:用来存放对象的信息,同一个类存放各自的成员变量,共享对象的方法。
栈:用来保存局部变量的值,包括基本数据类型的值、保存类的实例(堆区对象的引用)、保存加载方法的帧。
常量池:包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。常量池存在于方法区中,而方法区存在于堆中。

普通类型变量只在栈区占用一块内存,而引用类型变量要在栈区和堆区各占一块内存。
在方法的参数传递中,基本数据类型,String类是按值传递,即拷贝了一个副本!引用数据类型是按引用传递,即把栈中的地址传入

总结
Java程序运行时内存分配的大致情况。就是两种类型的变量:
基本类型和引用类型。二者作为局部变量,都放在栈中,基本类型直接在栈中保存值,
引用类型只保存一个指向堆区的指针,真正的对象在堆里。作为参数时基本类型就直接传值,引用类型传指针。
若有错误,欢迎指出。
原文地址:https://www.cnblogs.com/holdoncomeon/p/12367148.html