首页/新闻资讯/正文详情

Java为什么要分堆和栈

发布时间:2026/11/5 1:56:41 来源:云帆数科 栏目:资讯中心
Java为什么要分堆和栈
1.生命周期不一样栈跟方法走堆生命周期不确定栈里的数据跟着方法走。方法调用 → 压入栈帧方法执行完毕 → 栈帧直接弹出销毁。生命周期很短不需要垃圾回收。 存局部变量、基本类型、对象引用地址不是对象本身堆里的对象生命周期不确定。对象创建后可能跨很多方法、跨线程使用方法跑完对象不一定没用。什么时候没人引用了才由 GC 回收。2.访问速度差距大栈分配和回收极快内存连续分配方式简单移动栈指针接近 CPU 寄存器速度。堆分配慢很多需要在一大片空闲内存里找一块合适空间还要维护空闲链表、GC 标记整理。3.隔离并发天然保证线程安全栈线程私有每个线程有自己独立栈不存在多线程同时修改同一个栈内局部变量天然无竞争。堆线程共享所有线程都能访问里面的对象需要同步锁保证安全。4. 内存大小特性不同栈空间很小一般几 MB适合存放少量局部变量、引用栈深度有限调用太深会StackOverflowError堆空间很大G 级别适合存放数量不确定、大小不确定的对象、集合补充一个高频误区基本类型一定在栈对象一定在堆❌局部变量里的基本类型在栈成员变量跟着对象走对象在堆成员变量就在堆。✅还有 JDK 逃逸分析如果对象不逃出方法JIT 可以做栈上分配对象直接分配在栈避免 GC 开销这是优化不是默认行为。即逃逸分析 JIT 检查这个 new 出来的对象会不会跑到方法外面被别的代码拿到。如果它 “逃不出去”就叫【不逃逸】JIT 可以优化不在堆上创建对象改在栈上分配。局部变量写在方法内 / 代码块{}里面的变量只在当前方法生效基本类型Java 原生基础类型不是对象没有 new存的就是真实值 8 个byte、short、int、longfloat、doublecharboolean区分基本类型存值本身引用类型类、数组、String、集合等存对象地址成员变量写在类里面、方法外面的变量属于类 / 对象实例变量 静态变量例如代码public void test() { User u new User(); u.age 18; System.out.println(u.age); }逃逸分析判断这个对象有没有逃逸逃逸 对象的引用流出当前方法外面别的代码 / 别的线程可以拿到这个对象1.2.

相关推荐

Python 进阶神器:拷贝、迭代器、生成器、装饰器,老哥一次给你补齐
Python 进阶神器:拷贝、迭代器、生成器、装饰器,老哥一次给你补齐

基础语法你会了,但离 "写优雅的 Python" 还差几个高级武器。老哥这篇把拷贝、迭代器、生成器、闭包、装饰器一次补齐。一、浅拷贝 vs 深拷贝先分清三种 "复制":直接赋值:只是引用的别名,不产生拷贝&#xff1… · 2026/11/5 1:56:41

让程序 “联网“!TCP、UDP、HTTP 一次讲透,手写聊天程序和爬虫接口
让程序 “联网“!TCP、UDP、HTTP 一次讲透,手写聊天程序和爬虫接口

前面写的程序都是 "自己跟自己玩"。真实的应用要联网—— 浏览器请求网页、聊天软件收发消息、爬虫抓数据。这篇老哥带你打通网络编程。一、网络编程三要素进程之间要通信,靠三个东西:协议:定义通信规则(数据格式、传输… · 2026/11/5 1:56:41

[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战

📌 核心结论(TL;DR)LCEL 灵魂:LangChain 表达式语言(LCEL)通过重载管道符 |,将实现了 Runnable 协议的组件(模型、解析器等)像积木一样串联,实现优雅的链式编… · 2026/11/5 1:56:41

可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取
可自部署10分钟临时邮箱:SMTP收信、TTL清理与验证码提取

简介:面向开发者与Web学习者的10分钟临时邮箱源码包,围绕短时有效邮箱地址的生成、收信与到期失效流程,适合用于注册验证、下载试用等不愿暴露真实邮箱的场景,也可作为PHP邮件系统与Web服务设计的实践项目。压缩包共492个文件&… · 2026/11/5 2:41:02

DataGrip连接达梦数据库的完整配置指南
DataGrip连接达梦数据库的完整配置指南

1. 项目概述最近在帮客户做数据迁移时遇到了一个典型场景:需要连接达梦数据库(DM)进行数据操作,但发现DataGrip这款主流数据库IDE并没有预置DM的驱动配置。这其实是个挺常见的痛点——很多国产数据库或小众数据库在主流工具中缺乏原生支持。经过一番摸索… · 2026/11/5 2:41:02

Proxmox VE 7 apt-get update 100错误排查
Proxmox VE 7 apt-get update 100错误排查

很多人在 Proxmox VE 7 上装完系统、打开网页面板、新建第一台虚拟机,回头在 shell 里敲一句apt-get update,结果被一屏红色输出糊了一脸,最后一行写着E: Some index files failed to download...或者干脆只留一句apt-get update failed: exi… · 2026/11/5 2:41:02

DataGrip连接达梦数据库(DM8)实战指南
DataGrip连接达梦数据库(DM8)实战指南

1. 项目概述作为一名长期与数据库打交道的开发者,我深知连接非主流数据库时的痛苦。达梦数据库(DM)作为国产数据库的代表之一,在企业级应用中越来越常见,但很多开发者第一次连接时总会遇到各种问题。本文将基于DataGrip这款强大的数据库管理工… · 2026/11/5 2:41:02

MySQL 5.7安装与配置全指南:从入门到生产环境部署
MySQL 5.7安装与配置全指南:从入门到生产环境部署

1. MySQL 5.7安装前的认知准备MySQL作为全球最流行的开源关系型数据库,5.7版本因其稳定性与性能平衡成为众多企业的首选。这个版本首次引入了原生JSON支持、多源复制等企业级功能,同时优化了InnoDB存储引擎的性能。在开始安装前,需要明确几个… · 2026/11/5 2:41:02

Blender渲染参数与出图流程:引擎、采样、光程、降噪与提速
Blender渲染参数与出图流程:引擎、采样、光程、降噪与提速

1. 先把“渲染”这件事拆成三层来看很多人第一次点开 Blender 的渲染面板,会被密密麻麻的折叠菜单劝退,其实真正影响一张简单静物图成色的,就那么十来个参数。渲染在 Blender 里不是“一个按钮”,而是三层不同性质的东西叠在一起&… · 2026/11/5 2:40:02

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码