Java虚拟机的内存可以分为三个区域: 栈Stack,堆heap,方法区method area
栈的特点:方法执行的内存模型,每个方法被调用都会创建一个栈帧(储存局部变量,操作数,方法出口等);
JVM为每个线程创建一个独立的栈,用于存放该线程执行方法的信息;
栈属于线程私有,不能实现线程间的共享;
栈是由系统自动分配,速度快,栈是一个连续的内存空间。
堆的特点
用于存储创建好的对象和数组;
JVM只有一个堆,被所有线程共享;
堆是一个不连续的内存空间,分配灵活,速度慢;
方法区:
实际也是堆,只是用于储存类,常量相关的信息;
public class Student { //属性fields int id; String name; int age; Computer comp; void study() { System.out.println("学习"+comp.brand); } void play() { System.out.println("游戏"); } //程序执行的入口,必须要有的。 public static void main(String[]args) { Student stu = new Student();//创建一个新的对象 stu.id=001; stu.name="spencer"; stu.age=28; Computer c1=new Computer(); c1.brand="apple"; stu.comp=c1; stu.study(); } } class Computer{ String brand; }