zoukankan      html  css  js  c++  java
  • 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对指令进行优化排序,和代码的顺序不一致

    ===

  • 相关阅读:
    C#操作数据库,将其查查出来的记录条数显示在winform窗体中的方法之一
    关于SQL配置管理器的服务无法启动的解决办法!
    测试随笔
    .net版ckeditor配置水印功能(转)
    vs2010安装路径解决不能修改的方法
    c#wiform中KeyDown事件
    C#winform程序自定义鼠标样式
    一条sql语句循环插入N条不同记录(转)
    winform降低功耗总结
    ILMerge合并程序
  • 原文地址:https://www.cnblogs.com/gstsyyb/p/3913804.html
Copyright © 2011-2022 走看看