这个问题就需要了解内存的分类了,我做了一下总结:
堆区:
①存储的全部是对象,每一个对象都包含一个与之相对应的class的信息。(class的目的是得到操作指令)
②jvm中只有一个堆区被所有的线程共享,堆中不存放基本数据类型和自定义的对象的引用(不是对象),对象都是存放在堆区中的
栈区:
①每个线程都包含一个栈区,栈中只保存基本数据类型的对象和自定义数据类型的引用(不是对象),对象都放在堆区中。
②每个栈中的数据都是私有的,其他栈不能访问。
③栈区分为3个部分:基本类型变量区,执行环境上下文、操作指令区。
方法区:
①又叫静态区,和堆一样,被所有的线程共享。方法区包含所以的class和static变量。
②方法去包含的都是整个程序中永远唯一的元数,入class和static变量。
|