码迷,mamicode.com
首页 > 其他好文 > 详细

JVM知识

时间:2015-07-12 12:46:46      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:jvm   java虚拟机   

JVM是Java的核心,虽然对于普通开发者这块平常可能不太关注,但是如果一些基本原理不理解,有的时候发生一些疑难异常就会让我们摸不到头脑,无法解决这种意想不到的问题。JVM是通过指令系统、寄存器、栈结构、存储区域和垃圾回收来执行我们的程序。大家可以通过下面的JVM架构图更直观的理解。

技术分享

Class Loader:JVM通过模块将Class文件加载到JVM内存中。

Execution Engine:执行引擎也叫解释器,负责解释命令,提交OS执行。

JNI:Java Native Interface直接操纵机器硬件,如Java程序驱动打印机。

Stack:栈是在线程创建时创建,线程结束栈内存也释放,不存在GC问题。栈内存存储局部变量、程序运行状态、方法返回值等数据。栈中的数据以栈帧存在。栈帧是一个内存区块,是有关方法和运行期数据的数据集。当一个方法fun1被调用就产生一个栈帧Frame1,压入栈中,fun1方法又调用fun2方法,产生栈帧Frame2压入栈。

Heap:各条线程共享的运行时内存区域,所有类实例和数组对象分配内存的区域,由GC管理。堆可以划分为新生区、养老区和永久区,如下图。

技术分享

新生代:类在这里产生和应用,最后被垃圾回收。所有的类在伊甸区被new出来,当伊甸区满了,GC不会对该区不用的对象销毁,剩余有用的转到幸存区。

老年代:用于存放生成周期比较长的对象。

永久代:存放JDK自带的class,interface。


版权声明:本文为博主原创文章,未经博主允许不得转载。

JVM知识

标签:jvm   java虚拟机   

原文地址:http://blog.csdn.net/dotnetstudio/article/details/46848989

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!