美文网首页
01__JVM(1)

01__JVM(1)

作者: 忞触动心灵 | 来源:发表于2019-05-25 16:56 被阅读0次

    什么是JVM:(jvm有跨平台性)

    java代码-->(翻译)class(字节码文件)-->机器上运行

    JVM 代码--->==类加载器--->运行是数据区(内存)--->执行引擎==--->机器识别码

    内存管理是JVM的"五章六腑" : 包含-> 内存管理和垃圾回收

    image

    运行时数据区

    线程私有(指令):程序计数器 , 本地方法栈 , 虚拟机栈(java栈)

    线程共享(数据): 堆(对象) , 方法区(静态变量和常量)

    image

    程序计数器

    指向当前线程正在执行的字节码(class)指令的地址(行号)

    为什么需要程序计数器(每一个线程都有一个程序计数器,栈(虚拟机栈,本地方法栈))
    • java 天生就是多线程的,意味着线程需要切换
    • 确保多线程情况下的程序正常执行

    (STack): 数据结构--->java方法的执行是吻合的

    入口和出口只有一个

    入栈

    出栈

    特点:

    先进后出(FILO)

    为什么jvm要使用栈:

    虚拟机栈:(大小可以用 -Xss128k 设置)

    ==java的class文件进行反编译(javap -v .\javaStack.class > a.txt)的文件==
    (javap指令 -v 执行 .\javaStack.class所执行的文件地址)

    Java字节码指令大全

    存储当前线程运行方法所需的数据, 指令. 返回地址

    虚拟机栈有: ==栈帧== (类中每一个方法对应一个栈帧)

    ------主要有------

    局部变量表(是32位的地址(2^32寻址范围):八大基本数据类型(64位,高低位进行))
    (如果是对象)对象的引用的地址

    反编译文件里对应的局部变量表 image

    操作数栈

    image

    动态链接(多态)

    image

    返回地址

    image image

    虚拟机栈图解:

    image

    相关文章

      网友评论

          本文标题:01__JVM(1)

          本文链接:https://www.haomeiwen.com/subject/kutxaqtx.html