zoukankan      html  css  js  c++  java
  • java虚拟机自动内存管理机制

    java虚拟机的运行是内存区域

        java虚拟机在运行时会将它管理的内存区域分成不同职能的内存区域,各区域各司其职。类比中国的皇朝制度,三省六部,来管理整个国家。那来看一下虚拟机的职责。

        虚拟机的主要任务是用来运行java程序,即字节码文件,字节码文件有命令坐标(行号),类的信息。而类主要由属性和方法构成。

        虚拟机的内存区域就是这些人施展才华的天地,来看看虚拟机怎么人尽其才。

    1.虚拟机的内存区域图和字节码文件的对应关系

    白嫖使我快乐

     看看对应的关系以及职能

    oop对应表 虚拟机中的内存区域 理解 职能
    程序计数器 即下一步需要做什么 行号指示器,字节码解释器通过改变这块内存的值来确定要执行的字节码命令。分支,循环跳转,异常处理和线程恢复需要依靠它。native值是undefined且不会发生内存溢出错误。(线程私有)
    计算机的系统函数(一种) 本地方法栈 和线栈类似,调用的不是java方法 可以调用其他语言的方法以及java的native方法
    类中的方法 线栈 方法的链式调用,栈帧的入栈出栈顺序  生命周期和线程相同。
    类的信息 方法区 巧妇的米,载舟的水 用于存储被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。会有内存泄露等问题,
    对象 类的代言人聚集地 存放类的实例以及数组,虚拟机里最大的内存区域,垃圾处理器的主阵地。几乎所有对象都在这分配内存。实例对象=对象头+属性
    各种字面常量和符号引用 常量池 于取于放 用于存储各种字面常量,String.intern()方法,也可以存储对象的直接引用
    场地 直接内存 堆外内存 有一些机制会需要堆外内存,例如nio会建立通道和缓冲区,利用堆外内存可以显著提高效率

    方法和线栈的对应关系

    oop对应表 线栈 理解 职能
    方法 栈帧 一帧一方法 方法的实体,方法运行时的基本数据结构
    返回值 方法出口    
    方法内加减 操作数栈    
    方法内局部变量 局部变量表   存了各时期的基本数据类型(8个),对象引用reference和returnAdress
      动态链接    
           

    2.java虚拟机对象的创建过程

    3.OutOfMemoryError错误

  • 相关阅读:
    Windows10下配置单机zookeeper(连接服务器上的zookeeper)
    尚硅谷Zookeeper教程学习讲义
    腾讯云服务器在防火墙上添加可访问端口(CentOS7)
    uniPaaS 2.0新功能
    uniPaas RIA 安装与使用方法
    unipaas2.0发布了,有需要试的请与我联系QQ:79982575
    UNIPAAS抢滩Web 2.0
    最简便最快速的开发工具—Magic eDeveloper/DBMAGIC/UNIPAAS
    RIA技术的应用(UNIPAAS)
    数据库开发工具Magic教程基本操作(以Magic eDeveloper V10为例,其他版本会有差异)
  • 原文地址:https://www.cnblogs.com/Xilan/p/14413934.html
Copyright © 2011-2022 走看看