JVM知识

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。


发布了94 篇原创文章 · 获赞 102 · 访问量 25万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章