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对指令进行优化排序,和代码的顺序不一致

    ===

  • 相关阅读:
    Windbg 基本调试常识(转)
    善用VS中的Code Snippet来提高开发效率
    如何跟踪调试Software product?
    Visual Studio 2008 每日提示(二十七)
    6步确保 windbg 成功调试 .net(转)
    Visual Studio 2005 重置设置
    Print to Output /To trace runtime
    Windbg安装和配置(转)
    C++与C#交互
    All hands on deck
  • 原文地址:https://www.cnblogs.com/gstsyyb/p/3913804.html
Copyright © 2011-2022 走看看