深入理解java虚拟机(十) Java 虚拟机运行时栈帧结构
一个JAVA应用对应一个JVM虚拟机,
同理一个Android的APP也对应一个JVM虚拟机。
Java虚拟机在执行Java程序时,会把它管理的内存划分为若干个不同的数据区。这些区域有不同的特性,起不同的作用。它们有各自的创建时间,销毁时间。有的区域随着进程的启动而创建,随着进程结束而销毁,有的则始终贯穿虚拟机整个生命周期。
Java虚拟机运行时内存区域主要分为七部分,分别是:程序计数器,Java虚拟机栈,本地方法栈,方法区,Java堆,运行时常量池,直接内存。
程序计数器 --- 盛放当前线程所执行字节码的行号的指示器
Java虚拟机栈 --- 描述Java方法执行的内存模型,存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中
本地方法栈 --- 虚拟机栈作用十分相似,为Native方法服务
方法区 --- 共享,用于存储被虚拟机加载的类信息、常量、静态变量等
Java堆 --- 共享,在虚拟机启动时创建。它的目的便是存放对象实例,即存放用new产生的数据
运行时常量池 --- 在方法区,存放常量
直接内存 --- 不属于虚拟机中定义的内存区域,而是堆外内存
图片来源上述文章
一个JVM有多个线程
网友评论