Java的JVM学习一

一、java中的内存结构如何划分

栈和堆的区别:

栈负责处理运行,堆负债处理存储。
image.png

区域名称作用
虚拟机栈用于存储正在执行的每个Java方法,以及其方法的局部变量表等。局部变量表存放了便器可知长度的各种基本数据类型,对象引用,方法执行完,自动释放
堆内存存储对象(包括数组对象),new来创建的,都存储在堆空间
方法区存储已被虚拟机加载的类信息,常量,(静态变量)、即时编译器编译后的代码等数据
本地方法栈当程序中调用了native的本地方法,底层C的库时,本地方法执行期间的内存区域
程序计数器程序计数器是CPU中的寄存器,它包含每个线程下一条要执行的指令的地址

****例1:**
1、左边int[]声明的变量**arr**是放在**虚拟机栈**
2、右侧new出来的数组内容是放在**堆内存**

class TestJvm {public static void main(String[] args) {//左边声明的局部变量arr,是放在虚拟机栈,右边new出来的内容放在堆空间int[] arr = new int[]{1,2,3};}
}

举例2:
1、在虚拟机栈创建一个int类型的数组arr1,并在内存堆中创建长度为4的空间,初始值都为0。arr1指向堆空间的首地址0x12ab
2、数组arr1在内存堆中,将索引为0的元素设置为1,索引为1的元素设置为2。
3、在虚拟机栈创建一个String类型的数组arr2,并在内存堆中创建长度为2的空间,初始值都为null。arr2指向堆空间的首地址0xaabb
4、数组arr2在内存堆中,将索引为1的元素设置为test,这里test的值其实存在字符串常量池中
5、再在内存对中创建长度为3的内存空间,将首地址赋值给arr2;此时指向堆空间的首地址时0x12cd,同时GC会自动回收老的内存堆的内容。

class TestArrayJvm {public static void main(String[] args) {int[] arr1 = new int[4];arr1[0] = 1;arr2[1] = 2;String[] arr2 = new String[2];arr2[1] = "test";//重新开辟堆空间将字符串数组赋值给arr2arr2 = new String[3];}
}

一维数组内存解析.png

详细教程来源:https://zhuanlan.zhihu.com/p/576119507

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

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

相关文章

部署实战--修改jar中的文件并重新打包成jar文件

一.jar文件 JAR 文件就是 Java Archive ( Java 档案文件),它是 Java 的一种文档格式JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,多出了一个META-INF/MANIFEST.MF 文件META-INF/MANIFEST.MF 文件在生成 JAR 文件的时候…

校园网网络规划与设计——计算机网络实践报告

W...Y的主页 😊 代码仓库分享💕 目录 一、设计目的 二、软硬件环境 三、理论基础 四、设计方案 五、网络配置步骤 六、设计过程中出现的问题及相应解决办法 八、参考资料 一、设计目的 深入理解网络工程的三层层次设计模型; 掌握网络…

虚拟机安装archlinux

1、创建虚拟机 2、安装系统4、为了方便,修改密码并使用dos窗口连接 5、磁盘分区 由于新建虚拟机时是8G,所以只建一个分区就行 6、格式化分区并挂载 7、更新镜像 rootarchiso ~ # pacman -Sy 8、 pacstrap -i /mnt base base-devel linux linux-f…

深信服技术认证“SCCA-C”划重点:深信服云计算关键技术

为帮助大家更加系统化地学习云计算知识,高效通过云计算工程师认证,深信服特推出“SCCA-C认证备考秘笈”,共十期内容。“考试重点”内容框架,帮助大家快速get重点知识。 划重点来啦 *点击图片放大展示 深信服云计算认证&#xff08…

【操作宝典】IntelliJ IDEA新建maven项目详细教程

目录 🌼1. 配置maven环境 🌼2. 创建maven项目 🌼3. 创建maven项目完整示例 a. 导入spring boot环境 b. 修改maven配置 c. 下载jar包 d. 创建Java类 🌼1. 配置maven环境 【安装指南】maven下载、安装与配置详细教程-CSDN博客…

qt之菜单栏的文字添加(图片同理)

一、需求与目的 一般常规的PC软件都会有主窗口,主窗口中都会有菜单栏和工具栏,例如我们正在使用的Qt creator: 二、详细说明 首先需要先创建mainWindow设计师类,基类直接选择默认的MainWindow即可,然后就可以进行设计了…

Unity SRP 管线【第七讲:URP LOD实现以及Reflections反射探针】

目录 一、URP LOD 组件1、LOD Group的使用2、LOD切换原理Cross Fade(淡入淡出)模式Animated Cross-Fading如果未设置Clip,并且Fade Transition Width不为0LOD物体烘培 SpeedTree 模式 二、反射探针1. 获取反射探针数据2. 环境光照明 IBL3. 反射探针(Refl…

xmind思维导图 for mac v24.01中文版

mac电脑上思维导图软件哪个好呢? xmind for mac一个功能强大、易于使用的思维导图软件,够帮助你更好地组织思维、管理信息、规划项目和解决问题,提高个人和团队的工作效率。 软件下载:xmind思维导图 for mac v24.01中文版 XMind f…

WebService的services.xml问题

WebService有多种实现方式,这里使用的是axis2 问题: 在本地开发,访问本地的http://localhost:8080/services/ims?wsdl,正常访问 但是打成jar包,不管是linux还是window启动,都访问不到,报错…

VSCode 设置代理

Open Visual Studio Code, click the settings icon in the lower left corner, and click Settings.

Selenium无法定位元素的几种解决方案(超详细整理)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、frame/iframe表单嵌套 WebDriver只能在一个页面上对元素识别…

使用pygame建立一个简单的使用键盘方向键移动的方块小游戏

import pygame import sys# 初始化pygame pygame.init()# 设置窗口大小 screen_size (640, 480) # 创建窗口 screen pygame.display.set_mode(screen_size) # 设置窗口标题 pygame.display.set_caption("使用键盘方向键移动的方块的简单小游戏")# 设置颜色 bg_colo…

山体滑坡在线安全监测预警系统(解决方案)

在近年来,随着全球气候变化的影响,山体滑坡等自然灾害频发,给人们的生命财产安全带来了严重威胁。为了有效预防和减少山体滑坡带来的危害,许多地方开始在山上安装山体滑坡在线安全监测预警系统(解决方案)。…

人工智能深度学习发展历程-纪年录

前言 为了理解模型之间的改进关系、明确深度学习的发展目标、提高自身对模型的深度理解、贯彻爱与和平的理念。总之,我做了如下表格。 时间 重大突破 模型改进 详细信息 1847 SGD 随机梯度下降 1995 SVM 支持向量机 1982 RNN 循环神经网络,…

什么是接口的幂等性,如何保证接口的幂等性?

✅作者简介:大家好,我是Leo哥,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo哥的博客 💞当前专栏: Java ✨特色专栏: MyS…

贪吃蛇/链表实现(C/C++)

本篇使用C语言实现贪吃蛇小游戏,我们将其分为了三个大部分,第一个部分游戏开始GameStart,游戏运行GameRun,以及游戏结束GameRun。对于整体游戏主要思想是基于链表实现,但若仅仅只有C语言的知识还不够,我们还…

拓扑、监控、展示、流量、资产一体化管理,重庆石柱中医院部署智和信通统一运维平台

县中医院创建于1983年,是集医疗、教学、科研、急救、康复为一体的国家“二级甲等”综合性中医院,其智慧医院建设总体目标是以患者为中心,电子病历为核心,基于医院信息平台,实现全院资源的统一调度与管理,为…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(十六)

商家端订单管理模块 1. 订单搜索1.1 需求分析和设计1.2 代码实现1.2.1 admin/OrderController1.2.2 OrderService1.2.3 OrderServiceImpl 2. 各个状态的订单数量统计2.1 需求分析和设计2.2 代码实现2.2.1 admin/OrderController2.2.2 OrderService2.2.3 OrderServiceImpl2.2.4 …

基于SSM+MySQL的的新闻发布系统设计与实现

目录 项目简介 项目技术栈 项目运行环境 项目截图 代码截取 源码获取 项目简介 新闻发布系统是一款基于Servletjspjdbc的网站应用程序,旨在提供一个全面且高效的新闻发布平台。该系统主要包括后台管理和前台新闻展示两个平台,涵盖了新闻稿件的撰写…

React + react-device-detect 实现设备特定的渲染

当构建响应式网页应用时,了解用户正在使用的设备类型(如手机、平板或桌面)可以帮助我们提供更优化的用户体验。本文将介绍如何在 React 项目中使用 react-device-detect 库来检测设备类型,并根据不同的设备显示不同的组件或样式。…