Java 运行时数据区

Java 运行时数据区

  • 线程栈
  • 本地方法栈
  • 方法区
  • 程序计数器

Java 运行时数据区
我们的java文件,首先编译成class文件。通过类加载器加载到我们的Java虚拟机。Java虚拟机中,最大的一块是运行时数据区。

其中堆和方法区是所有线程共有的。线程栈、本地方法栈、程序计数器是每个线程单独拥有一份的。

类装载系统: 把class文件加载到Java虚拟机中
字节码执行引擎: 修改程序计数器
堆:存放对象
线程栈:存放线程私有的一些数据

    局部变量表: 存放局部变量
    操作数栈:存放需要的一些操作
    动态链接:把符号引用转换为真实的引用
    方法出口: 记录这个方法执行完成后的返回位置

本地方法栈:存放本地方法的一些数据

Heap 堆区

Java 运行时数据区
Heap堆区是发生 OOM故障最多的地方,堆中保存着我们创建的实例对象。堆是线程共享的。

堆的内存空间是可以自定义大小的,同时也支持运行时动态修改。通过 -Xms-Xmx者两个参数可以修改堆的 初始值最大值-X指的是JVM运行参数, ms即memeory start的简称,代表 最小堆容量mx是memeory max的简称,代表的是 最大堆容量; 例如,-Xms256M:表示堆的初始值为256M,-Xmx1024M:表示堆的最大值是1024M

Heap堆区主要分两个区,Young区和Old区,又称为新生代和老年代。

Young区分为1个 Eden和2个 Survivor.

Old区,当 Young区的对象满足一定的条件就可以放入 Old区。每个对象都有一个计数器,每当进行一次MiniGC,对象的年龄就会+1。当对象的的年龄到达指定的阈值,就会从 Young区移到 Old区。可以通过 -XX:MAXTenuringThrehold参数来指定,默认值是15。 有些大对象也会直接被放入Old区,这种情况一定要特别关注

元空间的前身是 Pern区(Pern区,又叫永久代,在JDK8及以后的版本中已经被淘汰)。
Pern区,又叫永久代,在启动时大小就已经确定,难以进行调优,
Metaspace元空间,在本地内存中进行分配。并且 Pern区中所有内容中 字符串常量移至 堆内存,其他的内容,包括 类元信息字段静态属性方法常量等都移至 Metaspace

Original: https://www.cnblogs.com/hardyzhou/p/16618144.html
Author: hardyzhou
Title: Java 运行时数据区

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585140/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • springboot2.2 集成 activity6 请假完整示例

    SpringBoot Test无页面简单示例 员工请假流程 员工发起申请,附带请假信息(请假几天) 单位领导审批,如果通过,交付经理审批,不通过,重新申请 经理审批,如果请假天数不…

    Java 2023年6月9日
    072
  • Spring源码分析 之浅谈设计模式

    一直想专门写个Spring源码的博客,工作了,可以全身性的投入到互联网行业中。虽然加班很严重,但是依然很开心。趁着凌晨有时间,总结总结。 首先spring,相信大家都很熟悉了。 1…

    Java 2023年5月30日
    043
  • Spring 常见面试题

    Spring 常见面试题 Spring 常见面试题 Spring 八股文 说说你对Spring的理解? 你觉得Spring的核心是什么? 说一下Spring的优势? Spring是…

    Java 2023年5月30日
    069
  • Spring Boot2配置Swagger2生成API接口文档

    一、Swagger2介绍 前后端分离开发模式中,api文档是最好的沟通方式。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服…

    Java 2023年6月15日
    060
  • CSharp: Proxy Pattern in donet core 3

    调用: 输出: https://github.com/apress/pro-c-sharp-10https://github.com/ProfessionalCSharp/Prof…

    Java 2023年6月16日
    043
  • MySQL相关事项

    重启MySQL service mysql stop service mysql start service mysql restart 创建MySQL用户并允许远程访问 CREA…

    Java 2023年6月5日
    065
  • 从new File(“”)到jdk源码

    概述 今天在项目中看到下面两行代码,看注释说是获取当前工作路径,之前也没有用过这种用法,比较好奇还能这样用,所以研究了一下源码。 //获&#x53D6…

    Java 2023年6月14日
    071
  • 并发编程之:JMM

    大家好,我是小黑,一个在互联网苟且偷生的农民工。 上一期给大家分享了关于Java中线程相关的一些基础知识。在关于线程终止的例子中,第一个方法讲到要想终止一个线程,可以使用标志位的方…

    Java 2023年6月7日
    082
  • MySQL十七:Change Buffer

    转载~ 在之前的文章介绍的InnoDB的存储结构的组成中,我们知道Change Buffer也是用InnoDB内存结构的组成部分。 Change Buffer主要是为了在写入是减少…

    Java 2023年6月8日
    0108
  • OptaPlanner将弃用DRL(Drools)评分方式!!!

    本来这段时间一直都在加紧我家”三胎”(易排通用智能规划平台)建设,毕竟我们的通用规划平台原定6月初就能上线,但因为其中遇到的各种技术问题及其它项目的突发情况…

    Java 2023年6月16日
    071
  • Java8新特性-四大核心函数式接口

    总结一下java8中的新特性 内置的四大核&am…

    Java 2023年6月8日
    050
  • LeetCode.1175-质数排列(Prime Arrangements)

    这是小川的第 413次更新,第 446篇原创 看题和准备 今天介绍的是 LeetCode算法题中 Easy级别的第 264题(顺位题号是 1175)。返回1到 n的排列数,以使质数…

    Java 2023年6月5日
    069
  • java设计模式

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月9日
    078
  • 访问控制列表与SSH结合使用,为网络设备保驾护航,提高安全性

    通过之前的文章简单介绍了华为交换机如何配置SSH远程登录,在一些工作场景,需要特定的IP地址段能够SSH远程访问和管理网络设备,这样又需要怎么配置呢?下面通过一个简单的案例带着大家…

    Java 2023年6月8日
    076
  • 从XXE漏洞修复引起Not supported: http://javax.xml.XMLConstants/property/accessExternalDTD说到SPI机制

    引子 在使用Fortify扫描时代码报XML External Entity Injection,此漏洞为xml实体注入漏洞,XXE攻击可利用在处理时动态构建文档的 XML 功能。…

    Java 2023年6月13日
    0100
  • this.$refs[formName].validate((valid) =>{} 无效,vue验证表单无效

    问题: this.$refs[formName].validate((valid) =>{}无效的问题,当验证通过的时候点确定按钮没有报错,也没有任何反应。 背景: ruoy…

    Java 2023年6月14日
    041
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球