Class实例在堆中还是方法区中?】的更多相关文章

1.JVM中OOP-KLASS模型 在JVM中,使用了OOP-KLASS模型来表示java对象,即:1.jvm在加载class时,创建instanceKlass,表示其元数据,包括常量池.字段.方法等,存放在方法区:instanceKlass是jvm中的数据结构:2.在new一个对象时,jvm创建instanceOopDesc,来表示这个对象,存放在堆区,其引用,存放在栈区:它用来表示对象的实例信息,看起来像个指针实际上是藏在指针里的对象:instanceOopDesc对应java中的对象实例:…
首先要说明的是,此文章转载自 http://blog.csdn.net/zzhangxiaoyun/article/details/7518917 谢谢作者.是本人认为对方法区解释得比较清楚的一篇文章了. 另外,这里ps一下,Class对象是存放在堆区的,不是方法区!这点很多人容易犯错.类的元数据(元数据并不是类的Class对象!Class对象是类加载的最终产品,类的方法代码,变量名,方法名,访问权限,返回值等等都是在方法区的)才是存在方法区的!Class对象可以认为是类的反射对象,所有的反射相…
JVM中的方法区 方法区存储什么? 用于存储已被虚拟机加载的类型信息.常量.静态变量.即时编译器编译后的代码缓存 1.类型信息 对每个加载的类型(类class.接口interface.枚举.注解)jvm必须在方法区中存储下边类型信息 这个类型的完整有效名 这个类型直接父类的完整有效名 这个类型的修饰符(public.abstract.final的某个子集) 这个类型直接接口的一个有序列表 2.方法信息 JVM必须保存所有方法的以下信息 方法名称 方法参数的数量和类型 方法的修饰符 方法的字节码.…
栈的使用:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间. 队的使用:通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域. 方法区的使用:方法区和堆都是各个线程共享的内存区域,用于存储已经被JVM加载的类信息.常量.静态变量.JIT编译器编译后的代码等数据:程序中的字面量(literal)如直接书写的100."hello"和常量都是放在常量池中,常量池是方法区的一部分. 栈空间操作起来最快但是栈很小,通常大…
通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间: 而通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域,由于现在的垃圾收集器都采用分代收集算法,所以堆空间还可以细分为新生代和老生代,再具体一点可以分为Eden.Survivor(又可分为From Survivor和To Survivor).Tenured: 方法区和堆都是各个线程共享的内存区域,用于存储已经被JVM加载的类信息.常量.静态变量.JIT编译器编译后的代码…
通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间:而通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域,由于现在的垃圾收集器都采用分代收集算法,所以堆空间还可以细分为新生代和老生代,再具体一点可以分为Eden.Survivor(又可分为From Survivor和To Survivor).Tenured:方法区和堆都是各个线程共享的内存区域,用于存储已经被JVM加载的类信息.常量.静态变量.JIT编译器编译后的代码等数…
通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的 现场保存都使用 JVM 中的栈空间:而通过 new 关键字和构造器创建的对象则放在 堆空间,堆是垃圾收集器管理的主要区域,由于现在的垃圾收集器都采用分代收 集算法,所以堆空间还可以细分为新生代和老生代,再具体一点可以分为 Eden. Survivor(又可分为 From Survivor 和 To Survivor).Tenured:方法区和堆都 是各个线程共享的内存区域,用于存储已经被 JVM 加载的类信息.常量.静态变…
Sun/Oracle JDK的HotSpot VM中,直到JDK7都有“持久代”(Permanent Generation,简称PermGen).也称为方法区.Oracle JDK8的HotSpot VM去掉“持久代”,以“元数据区”(Metaspace)替代之. Oracle是在JDK7的时候宣布移除PermGen内存区域,但是知道JDK8才最终移除. 在JDK7之前,所谓的Permanet Generation内存区域其实包含了两个部分: 方法区 Internded String 方法区主要…
(一)Eclipse中的快捷键:  ctrl+shift+f自动整理选择的java代码 alt+/ 生成无参构造器或者提升信息 alt+shift+s+o 生成带参构造 ctrl+shift+o快速导入包 alt+shift+s+r tab+enter-->shift+tab+enter 快速生成get set方法 ctrl+f11快速运行代码 说明:快捷键可以快速帮我们生成代码,减少开发的时间,提高效率,记住几个主要的就可以,其他的可以在Eclipse的编辑器中右键鼠标,在弹出的菜单项中选择s…