zoukankan      html  css  js  c++  java
  • jvm主要组成部分及其作用

    1.类加载器(Class Loader加载类文件到内存。Class loader只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有Exectution Engine 负责的。

    2.执行引擎(Execution Engine):也叫解释器,负责解释命令,交由操作系统执行。

    3.本地库接口(Native Interface本地接口的作用是融合不同的语言为java所用

    4.运行时数据区(Runtime Data Area

        

     

     (1)。堆是java对象的存储区域,任何用new字段分配的java对象实例和数组,都被分配在堆上,java堆可用-Xms-Xmx进行内存控制,jdk1.7以后,运行时常量池从方法区移到了堆上。

             

            新生代:老年代 = 12

            Edens1: s2=8:1:1

    (2)方法区:用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。

      误区:方法区不等于永生代

      很多人原因把方法区称作“永久代”(Permanent Generation),本质上两者并不等价,只是HotSpot虚拟机垃圾回收器团队把GC分代收集扩展到了方法区,或者说是用来永久代来实现方法区而已,这样能省去专门为方法区编写内存管理的代码,但是在Jdk8也移除了“永久代”,使用Native Memory来实现方法区。

    (3)虚拟机栈:虚拟机栈中执行每个方法的时候,都会创建一个栈桢用于存储局部变量表,操作数栈,动态链接,方法出口等信息。

    (4)本地方法栈:与虚拟机发挥的作用相似,相比于虚拟机栈为Java方法服务,本地方法栈为虚拟机使用的Native方法服务,执行每个本地方法的时候,都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。

    (5)程序计数器。指示Java虚拟机下一条需要执行的字节码指令。

        线程私有的:  程序计数器    虚拟机栈     本地方法栈

  • 相关阅读:
    [LeetCode]603. 连续空余座位(Mysql、自连接)
    [LeetCode]671. 二叉树中第二小的节点(递归)
    [LeetCode] 203. 移除链表元素(链表基本操作-删除)、876. 链表的中间结点(链表基本操作-找中间结点)
    [LeetCode]26. 删除排序数组中的重复项(数组,双指针)
    C# 把引用的dll嵌入到exe文件中
    iptables规则表
    [转载]EF Code First 学习笔记:约定配置
    使用itunes同步ios时丢失照片恢复
    USB硬件远程共享解决iphone已停用
    C# 非独占延时函数 非Sleep
  • 原文地址:https://www.cnblogs.com/rong0912/p/12047674.html
Copyright © 2011-2022 走看看