zoukankan      html  css  js  c++  java
  • jvm内存模型

    VM 中文名java虚拟机,是用来运行java程序的一个平台,这篇文章 主要讲述 JVM的内存模型。

     

    首先JVM将内存划分为了5大块,如下图所示:

    JVM内存模型

     

    这5大块可以分为 两大类,分别是 线程私有的,和 线程共享的

    线程私有的

    虚拟机栈,本地方法栈,程序计数器

    这块区域的数据是每个线程私有的,随着线程的创建而创建,线程的结束而释放

     

    虚拟机栈

    这块区域用于存放局部变量表(基本类型的变量,会把数据一起存在这,引用类型的 会将内存地址存在这) 以及 正在运行的方法信息

     

    本地方法栈

    这一块和虚拟机栈基本一致,但他存放的是 本地方法 创建的数据,程序员一般不需要过多的去关注他。

     

    程序计数器

    这块区域存放的是 线程正在执行的 字节码的行号指示器

     

    线程共享的

    方法区,堆

    这块区域的数据是每个线程共享的,他的生命周期跟线程无关,通常有垃圾回收机制来进行回收

     

    方法区

    这块区域也被称为 永久代 或者静态区,从名字就可以看出来,他是用于存放一些 永久性质的数据的,包括如下数据:

    常量池存在于此

    1. 类的访问修饰符,类型(接口,抽象,类),全线名称

    2. 字段的访问修饰符,类型,名称,

    3. 方法的访问修饰符,返回类型,名称,参数个数,参数类型等。

     

    同时 静态成员变量以及常量(包括值) 也会存在这块区域。

     

    这块区域用于存放对象的实例,垃圾回收一般情况下只会在这个区域进行。

  • 相关阅读:
    PAT B1027 打印沙漏 (20 分)
    PAT B1025 反转链表 (25 分)
    PAT B1022 D进制的A+B (20 分)
    PAT B1018 锤子剪刀布 (20 分)
    PAT B1017 A除以B (20 分)
    PAT B1015 德才论 (25 分)
    PAT B1013 数素数 (20 分)
    PAT B1010 一元多项式求导 (25 分)
    HDU 1405 The Last Practice
    HDU 1165 Eddy's research II
  • 原文地址:https://www.cnblogs.com/wcss/p/12299968.html
Copyright © 2011-2022 走看看