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

===

JVM实例以及内存的分配机制的更多相关文章

  1. berkeley db 内存池分配机制

    __memp_alloc() 注: MPOOL_ALLOC_SEARCH_DYN 没有 出现在 bdb document上, 也没出现在 除了mp_alloc外的代码里. 先删了 以便代码清楚. 按 ...

  2. Java内存垃圾回收机制(转贴)

    Java的堆是一个运行时数据区,类的实例(对象)从中分配空间.Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通 过new.newarray.anewarray和mul ...

  3. 阿里面试官:小伙子,你给我说一下JVM对象创建与内存分配机制吧

    内存分配机制   逐步分析 类加载检查: 虚拟机遇到一条new指令(new关键字.对象的克隆.对象的序列化等)时,会先去检查这个指令的参数在常量池中定位到一个类的符号引用,并且这个符号引用代表的类是否 ...

  4. JVM的艺术-对象创建与内存分配机制深度剖析

    JVM的艺术-对象创建与内存分配机制深度剖析 引言 本章将介绍jvm的对象创建与内存分配.彻底带你了解jvm的创建过程以及内存分配的原理和区域,以及包含的内容. 对象的创建 类加载的过程 固定的类加载 ...

  5. JVM 内存分配机制总结

    大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区),Heap(堆),Program Counter Register(程序计数器), VM Stack(虚拟机栈,也 ...

  6. 8.JVM内存分配机制超详细解析

    一.对象的加载过程 之前研究过类的加载过程.具体详情可查看文章:https://www.cnblogs.com/ITPower/p/15356099.html 那么,当一个对象被new的时候,是如何加 ...

  7. JVM学习之内存分配一

    转自:http://blog.csdn.net/mazhimazh/article/details/16879055,多谢博主分享 我们知道计算机的基本构成是:运算器.控制器.存储器.输入和输出设备, ...

  8. JVM内存管理的机制

    Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) sp ...

  9. jvm原理之内存机制

    转自:https://www.cnblogs.com/dreamowneryong/p/6381633.html JVM栈由堆.方法区,栈.本地方法栈.程序计数器等部分组成,结构图如下所示: 还有一张 ...

随机推荐

  1. class []的用法

    span[class='test']    =>匹配所有带有class类名test的span标签 span[class *='test']  =>匹配所有包含了test字符串的class类 ...

  2. Rails 5 Test Prescriptions(everday Rspectest作者推荐) 目录 1-3章

    总文档连接: RSpec.info/documentation/ 如何使用TDD 和 自动化测试来建立一个Rails app. TDD让你用测试来探索代码的设计.你将学习可利用的工具,并学习用什么工具 ...

  3. sqlplus中文问号

    添加两个环境变量后重启. 1.LANG=zh_CN.GBK(GBK是这样形式的,不同编码这里的value值需要跟着改变) 2.NLS_LANG=AMERICAN_AMERICA.ZHS16GBK(这个 ...

  4. EBS 定义并发参数常用值集

    1.ORG_ID 2.DATE 3.YES_NO

  5. PHP:第五章——字符串输出函数

    <?php header("Content-Type:text/html;charset=utf-8"); /*字符串输出函数*/ //1.echo 输出一个或多个字符 // ...

  6. AutoFac IoC DI 依赖注入

    AutoFac IoC DI 依赖注入 记录点点滴滴知识,为了更好的服务后来者! 一.为什么使用AutoFac? 之前介绍了Unity和Ninject两个IOC容器,但是发现园子里用AutoFac的貌 ...

  7. delphi文件操作的总结

    csfinal90我的:收件箱资源博客空间设置|帮助|退出 首页 业界 移动 云计算 研发 论坛 博客 下载 更多 windzb的专栏 目录视图 摘要视图 订阅 IT俱乐部创始人杜鸿飞专访       ...

  8. 进程间通信IPC

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  9. Visual Studio 后期生成事件命令行

    set "str=$(ConfigurationName)" if "%str%"=="Release" (xcopy /y/e $(Tar ...

  10. ROS会议 ROSCon 2017

    ----ROSCon2012-2017----来源链接:https://roscon.ros.org           近三年ROSCon(2015-2017)都会将会议视频录像和文档公开~以下为机 ...