【实战JVM】-基础篇-03-Java内存结构

【实战JVM】-基础篇-03-Java内存结构

  • 1 运行时数据区
    • 1.1 总览
    • 1.2 程序计数器
      • 1.2.1 是否会内存溢出
    • 1.3 java虚拟机栈
      • 1.3.1 栈帧的组成
        • 1.3.1.1 局部变量表
        • 1.3.1.2 操作数栈
        • 1.3.1.3 帧数据
          • 1.3.1.3.1 动态链接
          • 1.3.1.3.2 方法出口
          • 1.3.1.3.3 异常表
      • 1.3.2 是否会内存溢出
      • 1.3.3 设置虚拟机栈大小
        • 1.3.3.1 注意事项
    • 1.4 本地方法栈
    • 1.5 堆
      • 1.5.1 是否会内存溢出
      • 1.5.2 Java堆
        • 1.5.2.1 Arthas查看堆内存
        • 1.5.2.2 默认参数
    • 1.6 方法区
      • 1.6.1 元信息
      • 1.6.2 运行时常量池
      • 1.6.3 字符串常量池
      • 1.6.4 神奇的intern
      • 1.6.5 方法区实现
      • 1.6.6 是否会内存溢出
      • 1.6.7 静态变量的存储
    • 1.7 直接内存


1 运行时数据区

运行时数据区负责管理jvm使用到的内存,比如创建对象和销毁对象。

1.1 总览

在这里插入图片描述

在这里插入图片描述

1.2 程序计数器

在这里插入图片描述

在这里插入图片描述

1.2.1 是否会内存溢出

在这里插入图片描述

简单来说,PC计数器就两个作用:

  • 对于单线程环境,保存下一条需要执行的指令的内存地址。
  • 对于进程来说,用于保存上下文信息,方便切换。

1.3 java虚拟机栈

在这里插入图片描述

1.3.1 栈帧的组成

在这里插入图片描述

1.3.1.1 局部变量表

在这里插入图片描述

在这里插入图片描述

  • 起始PC:表示根据字节码哪一行可以使用该局部变量
    • i就是在0、1之后完成初始化,234可以使用,所以长度是3,j就是1

在这里插入图片描述

在这里插入图片描述

静态方法的局部变量表不包括自己this,而实例方法中的局部变量表存放着this,局部变量也会占用槽

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3.1.2 操作数栈

在这里插入图片描述

1.3.1.3 帧数据
1.3.1.3.1 动态链接

在这里插入图片描述

1.3.1.3.2 方法出口

在这里插入图片描述

1.3.1.3.3 异常表

在这里插入图片描述

1.3.2 是否会内存溢出

在这里插入图片描述

在这里插入图片描述

1.3.3 设置虚拟机栈大小

在这里插入图片描述

1.3.3.1 注意事项

在这里插入图片描述

1.4 本地方法栈

在这里插入图片描述

1.5 堆

在这里插入图片描述

成员变量存放于中,局部变量存放于中(由局部变量表维护)。

jdk8之前,静态变量存放在方法区中,jdk8之后,静态变量存放在中。

堆是线程共享的,所以针对需要多线程使用的环境,可以将变量变为静态变量以达到我们的需求。

1.5.1 是否会内存溢出

在这里插入图片描述

1.5.2 Java堆

在这里插入图片描述

1.5.2.1 Arthas查看堆内存
dashboard -i 刷新频率(毫秒)

查看堆内存used、total、max

在这里插入图片描述

1.5.2.2 默认参数

如果不设置默认参数,默认max是系统内存的1/4,total默认是系统内存的1/64。

在这里插入图片描述

建议将-Xmx和-Xms设置为相同的值,这样在程序启动之后可使用的总内存就是最大内存,而无需向java虚拟机再次申请,减少了申请并分配内存时间上的开销们也不会出现内存过剩之后,堆收缩的情况。

在这里插入图片描述

1.6 方法区

在这里插入图片描述

1.6.1 元信息

在这里插入图片描述

1.6.2 运行时常量池

解析阶段将常量池中的符号引用替换为直接引用

在这里插入图片描述

1.6.3 字符串常量池

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.6.4 神奇的intern

在这里插入图片描述

jdk6

在这里插入图片描述

jdk7之后

在这里插入图片描述

主要是因为jdk7之后,字符串常量池是在堆中的,而方法区是在永久代里的;jdk8字符串常量池是在堆中的,而方法区是在元空间里的。

1.6.5 方法区实现

在这里插入图片描述

在这里插入图片描述

1.6.6 是否会内存溢出

在这里插入图片描述

没有过高要求设置256M即可,但是元空间一定要设置。

1.6.7 静态变量的存储

在这里插入图片描述

1.7 直接内存

方法区是放在元空间中,属于操作系统中的直接内存。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【神经网络结构可视化】使用 Visualkeras 可视化 Keras / TensorFlow 神经网络结构

文章目录 Visualkeras介绍下载安装代码示例1、导入必要的库2、创建VGG16神经网络模型3、可视化神经网络结构4、完整代码5、使用教程 可视化自己创建的神经网络结构1、导入要的库2、创建自己的神经网络模型3、可视化神经网络结构图4、完整代码 Visualkeras介绍 Visualkeras是一…

C++代码错误解决1(函数模板)

1、代码如下 //示例函数模板的使用 #include <iostream> #include <string> using namespace std; template <typename T>//函数模板 T max(T a,T b) {return a>b?a:b; } int main() {int a,b;cout<<"input two integers to a&b:"…

【微机原理及接口技术】可编程并行接口芯片8255A

【微机原理及接口技术】可编程并行接口芯片8255A 文章目录 【微机原理及接口技术】可编程并行接口芯片8255A前言一、8255A的内部结构和引脚1.与外设接口&#xff08;数据端口&#xff09;2.与处理器接口 二、8255A的工作方式三、8255A的编程1. 写入方式控制字&#xff1a;控制字…

从0开始回顾ElasticSearch

1 elasticsearch概述 1.1 elasticsearch简介 官网: https://www.elastic.co/ ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的…

【动手学强化学习】第 6 章 Dyna-Q 算法知识点总结

【动手学强化学习】第 6 章 Dyna-Q 算法知识点总结 本章知识点基于模型的强化学习与无模型的强化学习方法简介无模型的强化学习方法基于模型的强化学习方法 强化学习算法的评价指标Dyna-Q算法Dyna-Q 算法的具体流程Dyna-Q 代码实践 本章知识点 基于模型的强化学习与无模型的强…

C++语言·list链表

其实现在在讲这些容器的时候&#xff0c;我们的重点已经不是它的接口都有什么&#xff0c;功能都是什么了&#xff0c;这些内容官网上都能查到&#xff0c;而且容器和容器之间接口的不同处很少&#xff0c;我在讲解的话也只是把官网上的东西截图下来复述一下。现在的重点其实都…

AtCoder Regular Contest 178 A~D

A.Good Permutation 2&#xff08;贪心&#xff09; 题意&#xff1a; 给你一个正整数 N N N和一个由 M M M个正整数 A ( A 1 , A 2 , … , A M ) A(A_{1},A_{2}, \dots,A_{M}) A(A1​,A2​,…,AM​)组成的序列。 在这里&#xff0c; A A A的所有元素都是介于 1 1 1和 N N …

网络编程-TCP

一、TCP的相关IP 1.1 SeverSocket 这是Socket类,对应到网卡,但是这个类只能给服务器使用. 1.2 Socket 对应到网卡,既可以给服务器使用,又可以给客户端使用. TCP是面向字节流的,传输的基本单位是字节. TCP是有连接的,和打电话一样,需要客户端拨号,服务器来听. 服务器的内核…

Stream流的使用

目录 一&#xff0c;Stream流 1.1 概述 1.2 Stream代码示例 二&#xff0c;Stream流的使用 2.1 数据准备 2.2 创建流对象 2.3 中间操作 filter map distinct sorted limit skip flatMap 2.4 终结操作 foreach count max&min collect 2.5 查找与匹配 a…

redis中String,Hash类型用法与场景使用

String 用法 1. 设置键值对 &#xff08;1&#xff09;设置键值对使用 set 命令设置 key 的值。 返回值&#xff1a;ok&#xff0c;如果 key 已经存在&#xff0c;set 命令会覆盖旧值。 &#xff08;2&#xff09;使用 setex 命令设置 key 的值并为其设置过期时间&#xff…

安全设计 | CISA:构建不可侵犯的代码,软件安全设计的未来之路

软件制造商在产品设计和开发过程中应采取安全设计原则和方法&#xff0c;以减少网络安全风险&#xff0c;并转变责任重心&#xff0c;使产品在设计时就内置安全特性&#xff0c;而不是依赖于后期的补丁和修复。为此CISA发布了《软件安全设计的原则和方法》&#xff0c;帮助软件…

兵器室管控系统|DW-306是一套成熟系统

概述 智慧兵器室管理系统&#xff08;DW-S306&#xff09;是依托互3D技术、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 本解决方案利用现有内部网络&#xff0c;部署部队智能兵器室管理系统&#xff…

【Java】欸...?我学集合框架?真的假的?

【Java】欸…&#xff1f;我学集合框架&#xff1f;真的假的&#xff1f; Java集合框架 概述 Java集合框架主要由以下几个部分组成&#xff1a; 接口&#xff08;Interfaces&#xff09;&#xff1a;定义了集合的基本操作&#xff0c;如添加、删除、遍历等。实现&#xff0…

大语言模型的工程技巧(二)——混合精度训练

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 混合精度训练的示例请参考如下链接&#xff1a;regression2chatgpt/ch11_llm/gpt2_lora_optimum.ipynb 本文将讨论如何利用混合…

Java语法篇-易错

文章目录 类型转换switch case类之间关系及UMLtry catch finally 类型转换 隐式类型转换&#xff0c;不同数值类型参与计算时&#xff0c;低精度会转化为高精度参与运算 byte,short,char参与整数运算时会转成int float,int 参与浮点数运算时会转成double 强制类型转换 高精…

数据结构 —— 栈 与 队列

1.栈 1.1栈的结构和概念 栈&#xff08;Stack&#xff09;是一种特殊的线性数据结构&#xff0c;它遵循后进先出&#xff08;LIFO&#xff0c;Last In First Out&#xff09;的原则。栈只允许在一端插入和删除数据&#xff0c;这一端被称为栈顶&#xff08;top&#xff09;&a…

c++引用和内联函数

一、引用 1.引用概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空 间&#xff0c;它和它引用的变量共用同一块内存空间。&#xff08;引用类型必须和引用实体是同种类型的&#xff09;&#xff0c;如&#x…

MySQL--联合索引应用细节应用规范

目录 一、索引覆盖 1.完全覆盖 2.部分覆盖 3.不覆盖索引-where条件不包含联合索引的最左则不覆盖 二、MySQL8.0在索引中的新特性 1.不可见索引 2.倒序索引 三、索引自优化--索引的索引 四、Change Buffer 五、优化器算法 1.查询优化器算法 2.设置算法 3.索引下推 …

2024年NGFW防火墙安全基准-防火墙安全功效竞争性评估实验室总结报告

Check Point 委托 Miercom 对 Check Point 下一代防火墙 (NGFW) 开展竞争性安全有效性测试&#xff0c; 选择的竞品分别来自 Cisco、Fortinet 和 Palo Alto Networks。对 Zscaler 的测试涉及他们的 SWG&#xff08;安全网关&#xff09;。测试内容包括验证防病毒、反恶意软件、…

SpringBoot+Vue开发记录(六)-- 后端配置mybatis

原型图什么的就先不管&#xff0c;后面再写。 本篇文章的主要内容就是springboot通过mybatis操作数据库实现增删改查。 重点是mybatis配置与相关文件数据&#xff0c;以后开新项目忘记了怎么配置的话可以再照着这个搞。 这算是最基础的部分了吧。 文章目录 一&#xff0c;配置…