Java中对象内存解析
堆Heap:存放对象实例
堆(heap):存储的全部是对象(包括数组等),每个对象都包含一个与之对应的class的信息。JVM只有一个堆,被所有线程所共享,堆是一个不连续的内存空间,分类灵活,但速度较慢。
栈Stack:存放局部变量
栈(stack):存放基本类型的变量数据和对象的引用,栈描述的是方法执行的内存模型,JVM为每个线程创建一个栈,用于存放线程执行方法的基本信息,栈的存储特性为“先进后出、后进先出”,大家可以理解为一个形象化的弹夹。栈由系统自动分配,速度块,是一块连续的空间。
方法区:存储类信息、常量、静态变量、即时编译器编译后分代码。
方法区(method area):又叫静态区,跟堆一样,JVM只有一个方法区,被所有线程所共享。方法区包含所有的类信息和静态变量、静态常量以及字符串常量。