• JVM的内存结构


    Java是按照运行时数据的存储结构来划分内存结构的,java虚拟机规范将java运行时的诗句划分为6种:

    1.PC寄存器

    用于保存当前执行程序的内存地址,同时java程序是多线程的,不可能一直都按照线性执行下去,当有多个线程交叉执行时,被中断的线程程序当前执行到哪条的内存地址需要记录下来。

    2.java栈

    java栈是与线程相关到一起的,每当创建一个线程时,JVM就会为这个线程创建一个java栈,这个hava栈中含有很多的栈帧,栈帧是与每个方法关联起来的,每运行一个方法就会创建一个栈帧。每个栈帧内部会有变量,操作栈与方法返回值等信息。

    每当一个方法执行完成时,战歌栈帧就会弹出战阵的元素作为这个方法的返回值,并清除这个栈帧。java栈顶就是当前正在执行的活动栈。PC寄存器也会执行这个位置。当这个栈帧调用另外一个方法时,与之对应的新的栈帧又被创建,并放在栈顶。

    java栈中的诗句不是共享的。不会存在同步锁的问题。

    3.堆

    存放java的对象。

    堆是被所有的java线程所共享的,要注意同步问题。

    4.方法区

    JVM方法区适用于存储类结构的地方,比如在class解析过程中,都会存到这个区域。

    方法区属于永久区的一部分,这个区域被所有的线程所共享。大小可以通过参数来控制。

    这个方法区存储的大小一般在程序启动后的一段时间就会确定了。需要加载的类通常都已经加载到jvm中了。如果项目中存在对类的动态编译,需要观察方法区的大小是否满足类存储。

    5.运行时常量池

    6.本地方法栈

    是为native方法准备的空间。

  • 相关阅读:
    计算机网络原理笔记 第一章 概述
    数据结构与算法入门C语言(三)线性结构-离散存储[链表]
    数据结构与算法入门C语言 (二) 线性结构-连续存储[线性表(数组)]
    数据结构与算法入门C语言 (一) 概述
    先画一个圈
    appium 简介和相关名称说明
    appium+python 自动化环境安装
    JDK 1.8 安装
    python安装
    python中的 join()函数
  • 原文地址:https://www.cnblogs.com/caobojia/p/6849999.html
Copyright © 2020-2023  润新知