在我的上一篇文章别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】中,相信大家已经对java类加载机制有一个比较全面的理解了,那么类加载之后,字节码数据在 Java 虚拟机内存中是如何存放的 ?Java 虚拟机在为类实例或成员变量分配内存是如何分配的 ?是的,这两个问题就涉及到了JVM 内存结构的知识了,那么这篇文章将进行解答。

@

1、内存结构还是运行时数据区?

要解答本篇上面的这些问题,我们首先需要了解一下 Java 虚拟机的内存结构。

从某一角度来说,Java 虚拟机的内存结构 == 运行时数据区,在《Java 虚拟机规范》中用的是【运行时数据区】术语的,并没有内存结构这么一说法。内存结构只是听着更加贴切,更加形象,因此知道内存结构就是运行时数据区的意思就好了!也没必要钻牛角尖纠结这个问题~

2、运行时数据区

JVM被分为三个主要的子系统:类加载器子系统、运行时数据区和执行引擎 。而今天的这篇文章主要讲解其中的运行时数据区(Runtime Data Areas)

在 Java 虚拟机规范中,定义了五种运行时数据区,分别是 Java 堆、方法区、虚拟机栈、本地方法区、程序计数器 !

顺道提一句运行时常量池也会进入方法区,也就是说方法区中就已经包括了常量池。

特别注意其中Java 堆

java 堆内存结构_基于JDK1.8的JVM 内存结构【JVM篇三】相关推荐

  1. 从Java代码到Java堆理解和优化您的应用程序的内存使用

    从Java代码到Java堆理解和优化您的应用程序的内存使用 简介: 本文将为您提供 Java? 代码内存使用情况的深入见解,包括将 int 值置入一个Integer 对象的内存开销.对象委托的成本和不 ...

  2. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  3. jstat 内存泄漏_基于Java内存dump文件分析解决内存泄漏问题

    概述 本文介绍一次解决现场java内存泄漏问题的经过,希望能提供后续遇到类似情况的读者一点思路. 生产环境发现的问题问题 生产环境运维人员反馈,服务器(windows系统)卡死,相关的服务都运行异常, ...

  4. java 堆转储快照_捕获Java堆转储的7个选项

    java 堆转储快照 堆转储是诊断与内存相关的问题的重要工件,例如内存泄漏缓慢,垃圾回收问题和java.lang.OutOfMemoryError.它们也是优化内存消耗的重要工件. 有很棒的工具,例如 ...

  5. java volatile内存屏障_从汇编看Volatile的内存屏障

    Java的Volatile的特征是任何读都能读到最新值,本质上是JVM通过内存屏障来实现的,让我们看看从字节码以及汇编码的角度,来看下是否真是如此? 一 Volatile与内存屏障 为了实现volat ...

  6. java osgi web开发_基于 OSGi 和 Spring 开发 Web 应用

    开发一个简单的OSGi Web应用实例 一个简单的Web应用 我们写一个简单的 Web 应用 compute.html :计算两个数字的和或乘积.如下图所示: 图1.一个简单例子 一个简单例子.bmp ...

  7. java网页作业提交_基于JAVA网上作业提交批改系统的设计(SQL)(含录像)

    基于JAVA网上作业提交批改系统的设计(SQL)(含录像)(毕业论文15000字,程序代码,SQLserver数据库) 摘  要 随着社会的进步,网络技术的发展为教育界提供了一片崭新的空间,传统的教学 ...

  8. java中变量 关键字_基于java的voliate关键字详解

    voliate关键字的作用: 一.内存可见性 基于缓存一致性协议,当用voliate关键字修饰的变量改动时,cpu会通知其他线程,缓存已被修改,需要更新缓存.这样每个线程都能获取到最新的变量值. 二. ...

  9. python程序占用内存高_如何优化Python占用的内存,面试必学

    如果程序处理的数据比较多.比较复杂,那么在程序运行的时候,会占用大量的内存,当内存占用到达一定的数值,程序就有可能被操作系统终止,特别是在限制程序所使用的内存大小的场景,更容易发生问题.下面我就给出几 ...

最新文章

  1. ASP.NET MVC 控制器激活(一)
  2. Android刷新机制-View绘制原理
  3. python判断日期_python如何判断日期的合法性?
  4. @EnableAspectJAutoProxy||AOP原理:【看给容器中注册了什么组件,这个组件什么时候工作,这个组件的功能是什么?】
  5. CDN视频流中的3个问题以及解决方法
  6. 如何在Visual Studio项目中正确添加汇编代码 .
  7. IntelliJ IDEA 2020 数据库连接Oracle和Mysql
  8. CSS清除浏览器input缓存黄色背景
  9. html2json文档,插件 jQuery.json2html 中文 API 文档
  10. 详细解决tomcat乱码 IDEA控制台乱码
  11. veu项目中下载图片到本地
  12. bzoj2101[Usaco2010 Dec]Treasure Chest 藏宝箱 DP
  13. 华为手机如何简单、快捷地投屏到电视机上?
  14. Android Studio 学习记录-图形定制
  15. ipykernel_launcher.py: error: unrecognized arguments: -f C:\Users\ABC\AppData\Roaming\
  16. 无变压器的最简单开关稳压电源
  17. 微信开放平台和公众平台的区别
  18. 外企做开发,爽吗?(HSBC篇)
  19. 使用css制作跳动的心
  20. Python深度学习(循环神经网络)--学习笔记(十三)

热门文章

  1. 【用户画像】应用场景
  2. Android基础控件—SearchView
  3. 冬令营第四天(1.21)
  4. tensorflow2实现yolov3并使用opencv4.5.5 DNN加载模型预测
  5. speex进行音频去噪
  6. python中文注释与单行注释_Python单行注释方法
  7. 短信的独特优势以及如何选择国际短信平台?
  8. GDB调试指南-启动调试
  9. mysql 命令行 h_mysql-命令行
  10. Flink 创建流处理运行环境