堆区:存储的全是对象,(class可执行文件)
只有一个堆区, 而且被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身和数组本身
栈区:每个线程只包含一个栈区,栈中只存储基础数据本身和自定义对象引用
每个栈数据是私有的
栈分为三个部分 基本类型变量区 执行环境上下文 操作指令区
方法区:被所有线程共享,方法区包含所有的class
方法区中包含都是在整个程序中唯一的元素,如class,static变量
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光(长生命周期对象持有短生命周期对象的引用(static))静态变量非静态内部类
静态内部类不会持有外部类引用