zoukankan      html  css  js  c++  java
  • JVM 的运行机制

    JVM 启动流程:

    1、通过java 命令 启动JVM

    2、装置配置(根据当前路径及系统版本寻找jvm.cfg)

    3、根据配置找jvm.dll

    4、使用jvm.dll初始化JVM

    5、找到main,并执行

    JVM 的内部结构

    PC寄存器:

    1、每个线程都有一个PC寄存器

    2、在线程创建的时创建

    3、指向下一条指令的地址

    4、执行本地方法,PC寄存器的值是未定义的

    方法区:

    1、保存类的信息

    2、通常与永久区关联在一起

    java堆:

    1、所有的对象  都存在堆

    2、所以线程都是共享java堆

    3、堆的结构与gc算法是有关系的

    4、gc的主要工作区

    java栈:

    1、线程私有

    2、栈由一些列帧组成

    3、帧保存一个方法的局部变量、操作数栈、常量池指针

    4、每一次方法调用,都会创建一个新的 帧,并压入栈中

    java栈  栈上分配

    1、小对象(一般几十个bytes),在没有逃逸的情况下,可以直接分配在栈上
    2、直接分配在栈上,可以自动回收,减轻GC压力
    3、大对象或者逃逸对象无法栈上分配

    怎么可以让递归函数 调用的次数多一些,应该怎么做?

     首先了解到线程在调用每个方法的时候,都会创建相应的栈,在退出方法的时候移出栈桢,并且栈是私用的,也需要占用空间,所以让一个程序的函数调用层次变的更深
        减少栈贞的空间很必要。或者增大线程的线的大小。
        通过volatile增加调用层次深度。线程会对一个没有volatile的变量进行临时存储,这就导致线程栈的空间增大,如果对一个变量增加volatile修饰,可以适当增加深度;
    除此之外可以减小局部变量表,比如 少用double,long,减少参数个数,局部变量在使用的时候,注意作用域

    jVM  内存模型

    1、每个线程都有自己的工作内存   ,与主存独立

    volatile  不能代替锁,一般情况比锁效率好

    JVM的可见性保证

    1、volatile 的使用

    2、synchronized 使用

    3、final(初始化之后,其他线程就可以看到)

    JVM的有序性

    1、本线程中,操作是有序的

    2、多线程是无序的,操作是无序的(指令重拍或主存同步延迟)

    3、加上synchronized ,可以保证重拍

    JVM 指令重排的规则

    程序顺序原则:一个线程内保证语义的串行性
    volatile规则:volatile变量的写,先发生于读
    锁规则:解锁(unlock)必然发生在随后的加锁(lock)前
    传递性:A先于B,B先于C 那么A必然先于C
    线程的start方法先于它的每一个动作
    线程的所有操作先于线程的终结(Thread.join())
    线程的中断(interrupt())先于被中断线程的代码
    对象的构造函数执行结束先于finalize()方法

    JVM字节码两种运行方式

    编译运行  效率高于 解释运行

    1、解释运行

            解释执行以解释方式运行字节码;解释执行的意思是:读一句执行一句

    2、编译运行(JIT)

          将字节码编译成机器码;直接执行机器码;运行时编译;编译后性能有数量级的提升

      

  • 相关阅读:
    基于 Jupyter Notebook 和Plotly的交互式COVID-19实时追踪可视化系统(上)
    基于CentOS7安装virtualenv虚拟环境
    Centos 7下安装nginx,使用yum install nginx,提示没有可用的软件包。
    上传本地项目至gitee(for window)
    Git初始化-git init 疑惑
    vs2013 使用nuget时,提示无法访问xxx上的源
    .Net 中使用EF ORM时,在应用DbSet<>.Where LINQ语法时提示错误问题
    asp.net MVC4下同时启用默认路由及Web API,以及针对WebAPI 考虑接口分版本问题
    Navicat premium远程连接 mysql一些问题
    C#中一些通用函数
  • 原文地址:https://www.cnblogs.com/lizhiyan-world/p/7301330.html
Copyright © 2011-2022 走看看