首页 > 代码库 > JVM 堆跟栈
JVM 堆跟栈
需要说明一点,现存的JVM有好多种,Sun公司的是Sun Hotspot JVM
堆:是JVM用来储存对象的地方,他是存储单位(部门)
什么是对象?
首先要知道,Java并不是完全的面向对象的,因为基本数据类型的变量就不是一个对象。
除了Java的基本数据类型之外的所有的Object都是对象。
包括,类对象,接口对象和数组对象。
堆中的数据是所有线程共享的,所以在其中追加一个对象需要给他加上锁,这也是为什么new一个对象的系统开销比较大的原因。
Sun Hotspot JVM中new一个对象,如果对象较小的话是不会加锁的。因为它会直接为每一个线程开辟一块新的空间。
栈:是JVM用来存储基本数据类型,以及逻辑处理的地方,他是运行时单位
JVM栈实例的创建与线程相关。启动一个线程就会创建一个JVM栈的实例。
栈中存放的大部门是基本数据类型以及堆中对象的引用。
方法区:存放加载的类的相关信息的地方
包括类名称,类修饰符,类中的静态变量,类中final类型的常量,类中字段信息,类中方法信息
Class的getClassName,inInterface等方法调用的时候会在这个区域中获得相应的信息。
GC:JVM销毁无用对象
JVM堆中的对象的引用不再出现在JVM栈中的时候,JVM的垃圾回收机制就会把这个堆中的对象所占用的空间回收。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。