美文网首页
JVM运行时内存结构

JVM运行时内存结构

作者: 西5d | 来源:发表于2017-12-05 19:25 被阅读23次

先上图


JVM内存结构

1.程序计数器
较小的一块内存,可以看作当前线程执行的字节码的行号指示器,字节码解释器通过这个计数器的值选择下一条需要执行的字节码指令,分支,循环,异常处理,线程恢复都依赖此。属于线程私有。

2.虚拟机栈
属于线程私有,与线程生命周期相同,每个方法执行同时会创建一个栈帧,存储局部变量表,操作数栈,动态链接,方法出口等信息。每个方法调用对应一个栈帧的入栈和出栈。

3.本地方法栈
和虚拟机栈类似,不同之处在于本地方法栈为使用到的Native方法本地调用服务。对本地方法没有强制规定,语言,方式,数据结构。有的虚拟机将它和虚拟机栈合二为一,可能抛出StackOverflowError和OutOfMemoryError。

4.堆
是被所有线程共享的一块内存,用于分配对象实例,可以细分为新生代,老年代,Eden区,Fro mSurvivor 和 ToSurvivor等。可以通过JVM启动参数配置初始大小,即-Xmx -Xms -Xmn等参数设置。


JVM堆内存

5.方法区
用于存储已经被虚拟机加载的类信息,常量,静态变量,编译后的代码等。一般来说,在常用的HotSpot上,可以把方法区叫做永久代,Permanent Generation
5.1 运行时常量池
属于方法区的一部分,在Class文件中的常量池,存放编译期生成的各种字面量和符号引用。当然运行时常量也可能计入方法区常量池。典型例子为String.intern()。


可能的问题:
1.基础的内存分配
2.对内存配置参数
3.永久代配置
4.配置堆内存超过实际物理内存
5.NIO(New Input/Output)基于通道和缓冲区可以使用Native方法直接分配堆外内存,通过一个directByteBuffer对象作为引用来操作,某些场景下可以提高性能,减少频繁在java堆和Native堆之间复制数据。

相关文章

  • java内存模型

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

  • Java并发编程 Java内存模型

    JVM内存结构 VS Java内存模型 VS Java对象模型 整体方向 JVM内存结构,和Java虚拟机的运行时...

  • JVM内存模型和JVM内存结构的区别

    JVM内存模型与内存结构不是同一个概念,JVM内存结构是从运行时数据区的结构角度描述的概念,而JVM内存模型是从主...

  • Java内存模型JMM 高并发原子性可见性有序性简介

    JVM运行时内存结构回顾 在JVM相关的介绍中,有说到JAVA运行时的内存结构,简单回顾下 小编整理了一些java...

  • Java从入门到入坑(底层篇)

    01:JVM 1:JVM内存结构 class 文件格式、运行时数据区:堆、栈、方法区、直接内存、运行时常量池、 堆...

  • JVM基本知识-内存结构

    JVM的内存结构 jdk8 jvm说明根据oracle官方文档的描述,可以总结JVM运行时内存的划分 Java虚拟...

  • JVM 面试整理

    JVM 内存结构,运行时数据区各模块什么作用、存放什么数据 jvm 内存结构包含:heap堆区:负责存放所有的 对...

  • java面试jvm总结

    JVM→ JVM 内存结构运行时数据区:堆、栈、方法区、直接内存、运行时常量池、堆存放对象, 方法区他用于存储已被...

  • JVM运行时数据区(JAVA内存结构)

    JVM运行时数据区(JAVA内存结构) 以前一直对JVM内存结构不是很清楚,最近深入学习后为加深影响参考网上相关的...

  • 5.JVM层GC调优

    JVM与调优 imooc JVM Markdown JVM的内存结构 运行时数据区 程序计数器PC Regist...

网友评论

      本文标题:JVM运行时内存结构

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