JVM体系结构

程序计数器:

比较小的内存空间,可以看成是当前线程所执行的字节码的行号指示器

字节码解释器工作时就是通过改变它的值来选取下一条需要执行的字节码指令

为什么每个线程都要有一个独立的程序计数器?

因为任何一个确定的时刻,一个处理器只会执行一条线程中的指令,线程会一直切换,为了让线程切换后能恢复正确的执行位置



Java虚拟机栈:

每个方法被执行的时候,虚拟据会同步创建一个栈帧放到虚拟机栈中,调用入栈,执行完毕出栈

栈帧又包含了:局部变量表,方法出口,操作数栈,动态连接(后面两个什么鬼)等信息

局部变量表:八大基本数据类型以及对象引用reference


本地方法栈:

和虚拟机栈的区别:虚拟机栈是为虚拟机执行Java方法的(字节码服务)

本地方法栈则是为虚拟机使用到的本地方法服务Native!

native:java的作用范围达不到,会去调用底层的C语音的库

通过JNI调用本地方法接口

JNI的作用:融合不同的语言让java为所欲为



本地方法区:

用于存储以及被虚拟机加载的类信息,常量,静态变量(貌似有个常量池)

以前是用永久代实现方法区,所以很多人觉得永久代等于方法区

1.6常量池在方法区中,1.7常量池在堆中,1.8常量池在元空间(方法区)中


Java堆:

所有的对象实例和数组都是在里面分配内存,也称GC堆

分为元空间,Eden,Old

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 内存溢出和内存泄漏的区别 内存溢出:out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,...
    Aimerwhy阅读 807评论 0 1
  • 一、基础知识 1. JVM实例:JVM实例对应了一个独立运行的java程序,它是进程级别。 2. JVM执行引擎实...
    java架构源阅读 254评论 0 1
  • 一、基础知识 1. JVM实例:JVM实例对应了一个独立运行的java程序,它是进程级别。2. JVM执行引擎实例...
    向前向后遇见改变阅读 320评论 0 1
  • JVM体系结构与工作方式 JAVA能够跨越计算机硬件组成差异和操作系统的差异在不同的主机上运行,主要就是JVM屏蔽...
    生瓜蛋子阅读 196评论 0 1
  • 如果不是别人提起,我或许永远也不回知道杭州还有这么个宁静的小角落。坐车绕过大半个西湖,兜兜转转,找到这个凤凰山角...
    菠萝小姐阅读 1,126评论 0 5

友情链接更多精彩内容