• JVM实例以及内存的分配机制


    JVM:一台用来模拟计算机执行计算指令的虚拟计算机,拥有自己的指令,指令执行环境,虚拟内存等。

    下面介绍虚拟机(JVM)--cpu,寄存器,内存,指令

    ======================================================================================================

    1.创建JVM装载环境和配置(GetApplicationHome取得Java.exe进程的路径,chshi)

    2.装载JVM.dll

    3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例,此时JVM与操作系统联系起来,因为JVM是构建在操作系统上面。此时它属于操作系统的一个进程有自己的环境空间

    4.调用JNIEnv实例装载并处理class类。(加载class文件)。

      当运行程序时,java文件编译成特定指令的class文件,就是JVM指令,虚拟机JVM再执行指令,最后底层通过操作系统来实现调用。JNIEnv调用GetStaticMethodID

      查找main类,之后调用CallStaticVoidMethod执行main方法,于是java程序就会在JVM里面执行。

    5.加载class文件到内存空间之后,就会把内存进行分配成(针对线程而言):全局共享的:堆以及方法区,线程似有的栈,PC计数器以及本地方法区。

    ======================================================================================================

    happens-before:原则----

    线程内存与主内存---------共享内存复制数据到线程内存,之后同步刷新到主内存 volatile就是直接共享内存,达到内存一致性

    重排序-------------------JVM对指令进行优化排序,和代码的顺序不一致

    ===

  • 相关阅读:
    设计模式(行为模式)之 观察者模式
    java 内存区域 (程序计数器)
    java 枚举的应用
    ServiceLoad 应用(链式编程:统一执行某一类功能、、分支语句优化)
    python前端学习之css
    python学习四十四天(前端之HTML标签)
    python学习四十三天(网络IO模型)
    python学习四十二天(协程)
    python学习四十一天(线程)
    python学习四十天(进程池)
  • 原文地址:https://www.cnblogs.com/gstsyyb/p/3913804.html
Copyright © 2020-2023  润新知