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计数器以及本地方法区。

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

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

时间: 2024-12-15 01:47:20

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

ngxin源码学习(二):nginx内存池分配机制

main -> ngx_save_argv创造一个包含argc个地址空间的数组ngx_argv,然后为ngx_argv每个地址空间分配argv[i]大小的空间,并将argv[i]拷贝入ngx_argv[i]指向的地址空间 main -> ngx_process_options调用ngx_pnalloc,在内存池中找到一块ngx_prefix大小的空间 onginx内存池分配机制:内存池pool的数据结构中包含两个链表,一个是ngx_pool_t链表(存放一般block),一个是ngx_larg

berkeley db 内存池分配机制

__memp_alloc() 注: MPOOL_ALLOC_SEARCH_DYN 没有 出现在 bdb document上, 也没出现在 除了mp_alloc外的代码里. 先删了 以便代码清楚. 按 mpool初始化代码来看, 一个hash bucket上 假定为 2.5个buffer. 查找有 三层嵌套: 遍历mpool region所有的hash bucket 遍历 此bucket的 buffer list 遍历此buffer的 version chain 用了 两个 栈内变量 标记 mtx

JVM虚拟机-03、JVM内存分配机制与垃圾回收算法

JVM虚拟机-03.JVM内存分配机制与垃圾回收算法 1 JVM内存分配与回收 1.1 对象优先在Eden区分配 大多数情况下,对象在新生代中?Eden?区分配.当?Eden?区没有足够空间进行分配时,虚拟机将发起一次Minor?GC.我们来进行实际测试一下.在测试之前我们先来看看?Minor?GC和Full?GC?有什么不同呢? Minor?GC/Young?GC:指发生新生代的的垃圾收集动作,MinorGC非常频繁,回收速度一般也比较快. Major?GC/Full?GC:一般会回收老年代,

java内存分配机制

java内存分配机制 通过这几天对一个内存溢出程序的监控,学习了程序运行时对内存的使用机制,在这里和大家分享下. Java程序运行在JVM(Java  Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性.所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提.         一个完整的Java程序运行过程会涉及以下内存区域: 寄存器:

(转)Java 内存区域分配和垃圾回收(GC)机制

Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢.这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制.概括地说,该机制对 JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,永不停息(Nerver Stop

JVM内存管理的机制

1.JVM内存管理的机制 内存空间划分为:Sun JDK在实现时遵照JVM规范,将内存空间划分为堆.JVM方法栈.方法区.本地方法栈.PC寄存器. 堆: 堆用于存储对象实例及数组值,可以认为Java中所有通过new创建的对象的内存都在此分配,Heap中对象所占用的内存由GC进行回收,在32位操作系统上最大为2GB,在64位操作系统上则没有限制,其大小可通过-Xms和-Xmx来控制,-Xms为JVM启动时申请的最小Heap内存,默认为物理内存的1/64但小于1GB:-Xmx为JVM可申请的最大He

JVM学习之内存分配一

转自:http://blog.csdn.net/mazhimazh/article/details/16879055,多谢博主分享 我们知道计算机的基本构成是:运算器.控制器.存储器.输入和输出设备,那这个JVM也是有这成套的元素,运算器是当然是交给硬件CPU还处理了,只是为了适应“一次编译,随处运行”的情况,需要做一个翻译动作,于是就用了JVM指令集,这与汇编的命令集有点类似,每一种汇编命令集针对一个系列的CPU,比如8086系列的汇编也是可以用在8088上的,但是就不能跑在8051上,而JV

jvm中堆栈以及内存区域分配

堆栈这个概念存在于数据结构中,也存在于jvm虚拟机中,在这两个环境中是截然不同的意思. 在数据结构中,堆栈是:堆 和栈两种数据结构,堆是完全二叉树,堆中各元素是有序的.在这个二叉树中所有的双亲节点和孩子节点存在着大小关系,如所有的双亲节点都大于孩子节点则 为大头堆,如果所有的双亲节点都小于其孩子节点说明这是一个小头堆,建堆的过程就是一个排序的过程,堆得查询效率也很高.栈是一种先进后出的线性表. 在jvm虚拟机中得堆栈对应内存的不同区域,和数据结构中所说的堆栈是两码事. 下面介绍jvm中得堆栈以及

java基础:内存分配机制

       在任何编程语言中,无论是基本类型还是引用类型,不论其作用域如何,都必须为其分配一定的内存空间,Java 语言也不例外            Java 的数据类型可以分为两种:基本类型(变量持有数据本身的值)和引用类型(是某个对象的引用,而并非是对象本身):            基本类型包括:boolean.float.double.int.long.short.byte以及char:在Java编程语言中除基本类型以外其余都是引用类型如:类类型.数组类型等.      在计算机内存