java的内存可分为3个区(area):堆(heap)、栈(stack)和方法区(method)
堆区中存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到数据执行指令。个人理解)
栈区:每个线程包含一个栈区,栈中只保存原始类型数据和对象和对象引用(不是对象),对象都存放在堆区中
每个栈中的数据(原始类型和对象引用)都是私用的,其他栈能访问。
栈分为3个部分:变量区、执行环境上下文、操作指令区(存放操作指令)。
jvm只有一个堆区(heap)被所有线程共享,堆中不存放原始类型和对象引用,只存放数据
方法区(method area):又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
个人理解:方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量,程序在运行期间只加载一次
另外还可以把java内存分为动态区和静态区
堆空间 (类实例)
都是动态产生,动态回收 所以叫"动态区" |
类(指令代码)、静态变量等
(不重复的,在整个应用程序中是唯一的) 所以叫"静态区" |
posted on 2006-12-22 09:07
comchyi 阅读(131)
评论(0) 编辑 收藏