菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
210
0

JVM知识

原创
05/13 14:22
阅读数 87006

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。


相关热门文章

发表评论

0/200
210 点赞
0 评论
收藏