zoukankan      html  css  js  c++  java
  • JVM有哪些分区?(解释详细 通俗易懂)

    JVM的分区可以分为两种:线程私有的内存区线程共享的内存区

     

    一.JVM中线程私有的内存区:

     

    1.程序计数器:当前线程所执行的字节码行号计数指示器,是线程私有的,即每个线程都有自己的程序计数器,需要注意的是,如果当前JVM执行的是Native代码(即非JAVA代码),那么程序计数器值为空

     

    2.JAVA虚拟机栈:存放栈帧的地方,每个JAVA方法执行的时候会创建一个栈帧,该栈帧保持的是该方法的相关信息(局部变量表等),栈帧随着方法的执行和跳出进栈和出栈,JAVA虚拟机栈是线程私有的,即每个线程都要自己的JAVA虚拟机栈

     

    3.本地方法栈:类似JAVA虚拟机栈,但是JAVA虚拟机栈是为JAVA方法提供服务的,而本地方法栈是为非JAVA方法提供服务的(Native方法)

     

    二.JVM中线程共享的内存区:

     

    1.堆:存放对象实例的地方,从GC(垃圾回收)的角度讲,又分为新生代和老年代,属于线程共享的内存区域

     

    2.方法区:储存已经被JVM加载的类信息,比如常量,静态变量,类的名称,方法信息等等,方法区中还包含运行时常量池和常量池,区别是运行时常量池是动态的,因为JAVA语言并不要求常量一定只能在编译期间生成,运行期间也有可能产生新的常量,这些常量就被放入运行常量池,这里所说的常量包括包装类和String类

     

    个人觉得从是否线程共享的角度看待JVM中的内存区更容易理解!

    另外堆和栈的解析可以参考这个:https://www.cnblogs.com/yinbiao/p/8073999.html

     

     

     

     

  • 相关阅读:
    页面使用本地IE版本
    C#获取客户端ip
    获取存储过程返回数据
    自制js表格排序
    读取数据用rs.open sql,conn,1,1
    学习存储过程
    COLLATE Chinese_PRC_CI_AS
    sqlserver存储过程语句(转)
    用P3P header解决iframe跨域访问cookie(转载)
    java通过dom创建和解析xml
  • 原文地址:https://www.cnblogs.com/yinbiao/p/10589703.html
Copyright © 2011-2022 走看看