JAVA中的对象内存管理
对象内存(单个对象)
main中调用学生类中的成员变量和成员方法
public class StudentDemo {
public static void main(String[] args) {
Student s = new Student();
System.out.println(s.name + "," + s.age);
s.name = "LB";
s.age = 23;
System.out.println(s.name + "," + s.age);
s.study();
s.doHomework();
}
}
下面是学生类:
public class Student {
//成员变量
String name;
int age;
//成员方法
public void study(){
System.out.println("好好学习");
}
public void doHomework(){
System.out.println("完成作业");
}
}
栈内存 堆内存
- 栈内存 :函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。
- 堆内存: 堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
mian栈 :Student s
main堆: new Student()
成员变量:栈中s指向的是堆内存中Student()的地址[如0x0001],而每一次操作,例如s.name可以理解为Student()地址中的name所指向的内容,JAVA中string默认为null。
成员方法:每一次调用成员方法时,都会再栈中申请执行,执行完后立即释放空间。
main:最后main执行完成之后也会立即释放再栈内存中申请的空间。