美文网首页
JAVA运行内存

JAVA运行内存

作者: 陈俊亙 | 来源:发表于2018-05-30 00:57 被阅读0次

组成部分

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

前面三者为线程隔离的区域,后面两者为线程共享的区域

程序计数器

概述:较小的内存空间,当前线程执行字节码的行号指示器,每个线程之间相互独立
注意:在执行JAVA方法时,计数器记录的是字节码指令地址;在执行native方法是,计数器值为空
异常:唯一不会有OutOfMemoryError的区域

虚拟机栈

概述:JAVA方法(字节码)执行的内存模型,线程之间相互独立

方法运行时会创建一个栈帧(方法运行的基本数据结构)存储局部变量表、操作数栈等信息。
方法的调用到执行完成,对应着栈帧 入栈到出栈 的过程
局部变量表存储内容:基本数据类型和对象引用(指向对象初始地址的引用指针)
八大基本数据类型:byte、short、int、long、char、float、double、boolean
局部变量空间在编译时大小就固定了,运行时不会改变大小
64的long和double占用两个局部变量空间,其余都只占用1个空间

异常:StackOverFlowError、OutOfMemoryError

本地方法栈

概述:基本等同于虚拟机栈,只是执行的是native方法,线程之间也是相互独立的
异常:StackOverFlowError、OutOfMemoryError

JAVA堆

概述:管理内存中最大的一块,是被线程共享的区域,只要存放对象的实例。Java堆是垃圾收器的主要区域,又被称为GC堆。主要划分为新生代老年代
配置:-Xmx 和 -Xms控制大小
异常:OutOfMemoryError

方法区

概述:线程共享的区域,主要存储被加载的类信息、常量、静态变量、即时编译的代码。又被称为:非堆(Non-heap)。
在HotSpot虚拟机上,被称为永久代。原因是垃圾收集行为较少,主要是常量池的回收和类型的卸载。
配置:-XX:MaxPermSize
异常:OutOfMemoryError

相关文章

  • Java运行时数据区

    Java内存模型 Java内存模型,就是Java程序运行时的内存模型。而Java代码是在Java虚拟机上运行的,由...

  • java内存模型

    java代码是运行在jvm上面的,java的运行时内存结构即是jvm运行时结构。 java内存结构从内存是否共享的...

  • 性能优化03-内存优化

    性能优化03-内存优化 一、内存模型 Java内存模型:Java程序在运行时内存的模型。而Java代码是运行在Ja...

  • Jvm内存模型

    一、内存模型 Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的...

  • java 内存模型-02-数据结构

    内存模型 Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的,由...

  • JAVA编程语言JVM虚拟机内存模型

    一、内存模型 Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的...

  • JVM内存划分(jdk1.7)

    一、内存模型 Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的...

  • 程序运行时,内存到底是如何进行分配的?

    Java运行时内存分配 将 Java 内存分为 堆内存(heap) 和 栈内存(Stack)并不准确,Java 的...

  • JAVA运行时内存及垃圾回收

    JAVA 1. Java运行时内存区域 在JAVA运行时的内存区域中,由JVM管理的内存区域分为以下几个模块: 程...

  • Java内存模型和垃圾回收

    1、 Java虚拟机内存模型 Java虚拟机内存模型是Java程序运行的基础。为了能使java应用程序正常运行,...

网友评论

      本文标题:JAVA运行内存

      本文链接:https://www.haomeiwen.com/subject/gmrzjftx.html