代码编织梦想

 紧接上篇:JVM运行时数据区(上篇)-CSDN博客 

  • 一般Java程序中堆内存是空间最大的一块内存区域。创建出来的对象都存在于堆上。
  • 栈上的局部变量表中,可以存放堆上对象的引用。静态变量也可以存放堆对象的引用,通过静态变量就可以实现对象在线程之间共享。
  • 字符串常量池,存储字符串的常量。

  • 堆空间有三个需要关注的值,used total max。
  • used指的是当前已使用的堆内存,total是java虚拟机已经分配的可用堆内存,max是java虚拟机可以分配的最大堆内存。
  • 当total达到max时说明可分配内容已满,注意此时并不代表OOM!

方法区

方法区是Java虚拟机规范中提出来的一个虚拟机概念,在HotSpot不同版本中会用永久代或者元空间来实现。方法区主要存放的是基础信息,包含:

  • 每一个加载的类的元信息(基础信息)。
  • 运行时常量池,保存了字节码文件中的常量池内容,避免常量内容重复创建减少内存开销。
ps:jdk1.8

总结

ps:jdk8

运行时数据区指的是JVM所管理的内存区域,其中分成两大类:

  • 线程共享 – 方法区、堆
    • 方法区:存放每一个加载的类的元信息、运行时常量池、字符串常量池。
    • 堆:存放创建出来的对象。
  • 线程不共享 – 本地方法栈、虚拟机栈、程序计数器
    • 本地方法栈和虚拟机栈都存放了线程中执行方法时需要使用的基础数据。
    • 程序计数器存放了当前线程执行的字节码指令在内存中的地址。
    • 直接内存主要是NIO使用,由操作系统直接管理,不属于JVM内存。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_54498224/article/details/135573682

jvm的特性,通过代码来揭秘运行时数据区_良月柒的博客-爱代码爱编程

运行时数据区 之前学习类加载器的时候,最后放出了一张图,再来回顾一下 类加载器就是把字节码文件加载到运行时数据区里面的一个机制,加载到运行时数据区之后呢,又发生了什么? 接下来我们就来看看。这就是JVM运行时数据区: 运行时数据区分为:方法去、堆、虚拟机栈、本地方法栈、程序计数器。 而黄色区,会被称为栈。 堆和栈的根本作用,就是用来存放

JVM——(8)运行时数据区的方法区-爱代码爱编程

文章目录 往期文章前言一、栈、堆、方法区的交互关系二、方法区的理解方法区在哪里?方法区基本理解Hotstop中方法区的演进三、设置方法区大小与OOMJDK7及以前(永久代)设置JDK8及以后(元空间)设置四、方法区的内部结构类型信息:域(属性)信息:方法信息:non-final 类型的类变量全局常量:static final运行时常量池:常量池中有

JVM运行时数据区篇(程序计数器)-爱代码爱编程

JVM运行时数据区篇 1.什么是程序计数器?2.程序计数器的作用3.程序计数器有关问题 1.什么是程序计数器? JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息,CPU只有把数据装载到寄存器才能够运行JVM中的PC寄存器是对屋里PC寄存器

JVM运行时数据区简介-爱代码爱编程

 JVM内存结构 一、程序计数器1.1 定义1.2 作用1.3 特点二、虚拟机栈2.1 定义2.2 作用2.3 特点三、本地方法栈3.1定义四、堆4.1 定义4.2 特点五、方法区5.1 定义5.2 具体实现 一、程序计数器 1.1 定义   程序计数器是一个记录着当前线程所执行的字节码的行号指示器,它记的是下一条JVM指令的执行地址。

JVM 运行时数据区(栈和堆)-爱代码爱编程

文章目录 JVM 是一种规范什么是 JVM?为什么 JVM 是一种规范?Java 程序的执行过程JVM 与字节码文件栈指令集架构和寄存器指令集架构Hotspot 虚拟机及 Dalvik&ART 虚拟机JVM 的组成部分及架构运行时数据区方法调用过程(栈)虚拟机栈基本信息程序计数器/PC寄存器栈帧内部结构解析局部变量表操作数栈动态链接方法返回

面试必备——图文剖析JVM的运行时数据区-爱代码爱编程

文章目录 1.走近JVM2.走进JVM的运行时数据区[^3]2.1.程序计数器2.1.1.简述2.1.2.概要总结2.2.Java虚拟机堆栈2.2.1.简述2.2.2.概要总结2.3.本地方法栈2.3.1.简述2.3.2.概要总结2.4.Java堆2.4.1.简述2.4.1.1.对象都在Java堆上分配吗?2.4.2.概要总结2.5.方法区2.5.

【java jvm】运行时数据区-爱代码爱编程

JVM 在执行 Java 程序的过程中会把它管理的内存分为若干个不同的数据区域, 这些区域有着各自的用途。 根据《Java虚拟机规范》中规定, JVM 所管理的内存大致包括以下几个运行时数据区域, 如图所示: 这个运行时数

vc++6.0 sqlite3调用例子-爱代码爱编程

1,为什么要使用Sqlite3? SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。 2,为什么使用SQLite version 3.8.4.3 2014-04-03 16:53:12的版本 (1)dll体积小6

【jvm基础篇】jvm运行时数据区-爱代码爱编程

文章目录 运行时数据区应用场景一、程序计数器程序计数器的作用程序计数器会出现内存溢出吗? 栈二、Java虚拟机栈栈帧存放什么数据局部变量表字节码文件的局部变量表栈帧的局部变量表思考题:**以下代码的局

jvm运行时内存:堆-爱代码爱编程

文章目录 1. 核心2. 堆的内部结构2.1 年轻代与老年代 3. 如何设置堆的内存大小3.1 如何设置新生代与老年代比例?3.2 如何设置Eden、幸存者区比例?

c++ 多态-爱代码爱编程

什么是多态 多态是面向对象编程的一个核心概念,它允许处理对象的代码基于对象的运行时类型,以不同的方式进行响应。直观地讲,多态就是一种可以以多种形态呈现的性质。在计算机编程中,我们指的是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。 C++中的多态主要有两种形式:编译时多态(静态多态)和运行时多态(动态多态)。 编译时多态:这主