第四堂Java基础课:从B+树切到JVM内存,手绘内存图
第四堂Java基础课从B树切到JVM内存手绘内存图上节课刚讲完B树在磁盘上的存储结构这节课突然切到了Java内存模型。一开始有点懵后来才反应过来——不管是B树还是红黑树最终都要跑在内存里不了解JVM的内存布局理解引用、对象传递这些东西就容易浮在表面。于是这节课的主题变成了数据在内存里到底是怎么放的栈、堆、方法区各管一摊JVM的内存区域划分是这节课的基础框架。老师画了一张大图分了几个区域栈Stack每个线程有自己的栈方法调用时入栈执行完出栈。栈里存的是局部变量、方法参数、返回值。方法嵌套调用的时候栈帧一层层压上去后进先出。堆Heap所有new出来的对象和数组都放在这里。堆是JVM内存里最大的一块所有线程共享。GC垃圾回收主要就是回收堆里的垃圾。方法区Method Area存类信息、常量、静态变量这些。还有运行时常量池字符串字面量就放在这里。程序计数器和本地方法栈前者记录当前线程执行的字节码地址后者服务于Native方法这两个相对不太需要深究。老师说搞清楚栈和堆的区别基本上就能应付绝大多数内存相关的面试题了。基本类型 vs 引用类型存的地方不一样这是今天最核心的内容。基本类型int、long、double、boolean这些直接存值本身而且存放在栈里。比如 int a 10栈里直接开辟4个字节存10。引用类型分两块栈里存的是地址引用真正的对象在堆里。比如 String s new String(“hello”)栈里的s存的是堆里对象的地址。我特意问了一下自己之前理解的引用就是对象本身其实是错的。引用只是拿着对象的地址像一张写有门牌号的纸条不是房子本身。数组也是引用类型。int[] arr new int[3]arr这个变量在栈里new出来的数组对象在堆里里面存了三个int值。静态变量类级别的共享static修饰的变量属于类本身不属于任何对象实例。它在类加载的时候就分配空间存放在方法区里。所有对象共享同一个静态变量——一个对象改了值其他对象看到的都是修改后的值。非静态成员变量属于对象实例每个对象在堆里有自己的一份互不影响。老师举了个例子如果有个类Student里面有static String school和String name那么school在所有学生对象中共享而每个学生有自己的name。值传递Java只有值传递这是今天最容易踩坑的地方也是面试高频考点。Java只有值传递没有引用传递。关键区别在于传基本类型传的是数值的副本方法里改形参不影响实参传引用类型传的是引用的副本也就是地址的拷贝方法里通过形参修改对象的属性会影响实参指向的对象但交换两个形参的引用不会影响实参老师现场写了一段交换代码试图在方法里交换两个对象结果是徒劳的——因为交换的只是形参副本的指向实参的引用根本没变。想明白了这一点之前一些为什么传对象进去能改属性但不能交换的困惑就解开了。多维数组数组里的数组二维数组本质上是数组的数组。外层数组存的是对内部一维数组的引用内部数组才存具体数据。画内存图的时候特别直观int[][] matrix new int[2][3]matrix在栈里指向堆里的外层数组外层数组的每个元素又指向三个不同的内部数组。Java还支持不规则数组就是外层数组的每个元素可以指向不同长度的内部数组——这一点和C语言不一样C语言要求每行长度固定。这节课的几点感受信息量不小但逻辑主线很清晰数据在内存里怎么放→不同类型的变量存哪里→静态和非静态的区别→参数传递的底层原理→数组的内存结构。老师说课后要整理完整的内存图笔记我打算把每种类别基本类型、对象、数组、静态变量、字符串的存储位置都画一张图串起来画完应该就差不多了。另外老师说下节课准备开始刷题了数据结构的前置知识差不多了终于要真正动手写代码了。

相关新闻

如何识别C2通信中的恶意出站IP?IP离线库+威胁情报融合方案

如何识别C2通信中的恶意出站IP?IP离线库+威胁情报融合方案

去年护网期间,我们监测到内网一台业务服务器持续向境外IP发起异常连接,频率稳定在每30秒一次。防火墙告警显示“疑似C2通信”,但威胁情报平台API查询该IP显示“无已知恶意标记”。团队僵持了近两个小时:直接封禁,怕影响…

2026/7/23 7:48:00 阅读更多 →
小区高空抛物责任划分测评,复盘数字人民事普法线下落地实用性

小区高空抛物责任划分测评,复盘数字人民事普法线下落地实用性

看了某小区高空抛物砸伤居民的新闻之后,我们带着问题跑了三个社区的物业办公室和居委会,也接入了魔珐星云的法务数字人做了一轮普法能力的实际验证。下面记录几段对话和发现。 物业老张的困惑 老张在城南某小区做了六年物业经理,去年处理了两…

2026/7/23 7:48:00 阅读更多 →
深入解析Tiva™微控制器复位与时钟系统:从原理到实践

深入解析Tiva™微控制器复位与时钟系统:从原理到实践

1. 项目概述:从“心跳”与“重启”说起在嵌入式系统的世界里,微控制器就像一颗大脑,而它的“心跳”与“重启”机制,直接决定了整个系统的生命力和可靠性。这颗“大脑”的每一次跳动,都依赖于精确的时钟信号&#xff1b…

2026/7/23 7:47:00 阅读更多 →

最新新闻

C++实现高斯消元法矩阵求逆:从原理到工程实践

C++实现高斯消元法矩阵求逆:从原理到工程实践

1. 项目概述:为什么我们需要自己实现矩阵求逆?在C的世界里,尤其是涉及到数值计算、图形学、机器学习或者物理引擎开发时,矩阵运算几乎是家常便饭。很多时候,我们依赖于像Eigen、Armadillo这样优秀的第三方线性代数库&a…

2026/7/23 8:32:14 阅读更多 →
pybind11实战:C++ STL容器与Python数据结构的双向自动转换

pybind11实战:C++ STL容器与Python数据结构的双向自动转换

1. 项目概述:为什么我们需要“无缝转换”?在C和Python混合编程的世界里,数据交换一直是个既基础又头疼的问题。想象一下,你有一个用C写的核心算法库,性能强悍,但你想在Python的灵活生态里调用它。算法内部大…

2026/7/23 8:32:14 阅读更多 →
CSP(Communicating sequential processes)

CSP(Communicating sequential processes)

我们从Go的角度对它进行一些分析,摘抄一段概要: “用于描述两个独立的并发实体通过共享的通讯 channel(管道)进行通信的并发模型。 CSP中channel是第一类对象,它不关注发送消息的实体,而关注与发送消息时使用的channel。” 好了&a…

2026/7/23 8:32:14 阅读更多 →
昇腾NPU中Mul与Div算子在注意力机制的核心作用

昇腾NPU中Mul与Div算子在注意力机制的核心作用

1. 注意力机制中的Mul与Div算子核心作用解析 在昇腾NPU的CANN架构中,ops-nn算子库的Mul(乘法)和Div(除法)算子是实现注意力机制的基础计算单元。这两个看似简单的元素级运算,在自注意力机制中承担着关键角色…

2026/7/23 8:32:14 阅读更多 →
CAN总线位定时配置实战:从芯片手册到稳定通信的寄存器解析

CAN总线位定时配置实战:从芯片手册到稳定通信的寄存器解析

1. 项目概述:从芯片手册到稳定通信 搞嵌入式开发,尤其是汽车电子或者工业控制,CAN总线是绕不开的一道坎。很多工程师在项目初期,面对芯片手册里那一堆关于位定时(Bit Timing)的公式和寄存器位域&#xff0c…

2026/7/23 8:32:14 阅读更多 →
BFF 层的前后端协作模式复盘:GraphQL 与 tRPC 在出行平台的选型对比

BFF 层的前后端协作模式复盘:GraphQL 与 tRPC 在出行平台的选型对比

BFF 层的前后端协作模式复盘:GraphQL 与 tRPC 在出行平台的选型对比 一、BFF 层的定位与选型背景 Backend For Frontend(BFF)层的核心职责:为特定前端场景提供定制化的数据聚合与接口适配。出行平台有三个前端场景:乘客…

2026/7/23 8:31:14 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻