面向对象的内存分析
参考:http://www.sxt.cn/Java_jQuery_in_action/object-oriented.html
;尚学堂JAVA300集-064内存分析详解_栈_堆_方法区_栈帧_程序执行的内存变化过程
栈:用于存放局部变量;一个线程一个栈,线程间不能共享;在一个线程中每个方法都有一个栈帧;
堆:用于存放创建好的对象,一个对象在堆中开辟一块;JVM只有一个堆,所有线程共享;
方法区(也是堆):用于存储类信息、静态变量、字符串常量;只有一个方法区!
代码:
SxtStu.java
public class SxtStu {
//属性fields
int id;
String sname;
int age;
Computer comp; //计算机
//方法
void study(){
System.out.println("我在认真学习!!,使用电脑:"+comp.brand);
}
void play(){ System.out.println("我在玩游戏!王者农药!"); } //构造方法。用于创建这个类的对象。无参的构造方法可以由系统自动创建。 SxtStu(){ System.out.println("调用了无参的构造方法!"); } //程序执行的入口,必须要有 //javac Sxtstu.java , java Sxtstu public static void main(String[] args) { SxtStu stu = new SxtStu(); //创建一个对象 stu.id=1001; stu.sname= "高淇"; stu.age = 18; Computer c1 = new Computer(); c1.brand = "联想"; stu.comp = c1; stu.play(); stu.study(); } } class Computer { String brand; }
图解: