当前位置: 首页 > news >正文

java中的内存分配

目录

1.堆内存

2.栈内存

3.常量池

4.寄存器

5.示例

6.总结


1.堆内存

堆用来存放程序中动态生产的数据,如new出来的对象。

通过new方式创建的对象,数组及字符串都有自己的内存地址。

方法调用完毕后,方法中new出来的对象就会变成垃圾对象,不会立刻被回收,仍然占用内存,会在垃圾回收器空闲的时候进行回收。这也是java比较占内存的原因

创建出来的对象只包含各自的成员变量,并不包含方法。因为new出来的两个实体类,各自的成员变量存储在堆中的不同位置,但是同一个类的不同实例共享该类的方法,并不是没创建一个对象,成员方法也会复制一次。

2.栈内存

栈中主要存放一些基础数据类型的变量和引用对象的引用变量。

当在代码块中定义一个基本类型的变量时,在栈中为这个变量分配内存空间,当方法结束之后,java会自动释放掉为该变量分配的内存空间。

3.常量池

常量池中存放字符串常量及基本类型的常量,通过final进行定义。

常量池的好处是为了避免频繁的创建和销毁对象而影响性能,实现了对象的共享。

节省了内存空间,常量池中所有相同的字符串常量被合并,只占用一个空间。

4.寄存器

JVM内部虚拟寄存器,存取速度非常快,程序不可控制。

5.示例

        String a = "12";String b = "12";System.out.println(a == b);  // true

上述方法创建的字符串,在内存中其实只存在一个对象而已。这种写法有利于节省内存空间,同时还可以提高程序的运行速度,因为JVM会自动根据栈中数据的实际情况来决定是否创建新对象。

        String str1 = new String("abc");System.out.println(System.identityHashCode(str1));String str2 = new String("abc");System.out.println(System.identityHashCode(str2));System.out.println(str1 == str2);  // false

使用new来创建的对象,存在堆中。每调用一次就创建一个新的对象。创建的两个字符串虽然内容时一样的,但是地址不一样。

6.总结

在开发中,我们需要注意内存放的使用情况,避免出现内存溢出的问题,尤其是数据量大的情况下。

相关文章:

java中的内存分配

目录 1.堆内存 2.栈内存 3.常量池 4.寄存器 5.示例 6.总结 1.堆内存 堆用来存放程序中动态生产的数据,如new出来的对象。 通过new方式创建的对象,数组及字符串都有自己的内存地址。 方法调用完毕后,方法中new出来的对象就会变成垃圾…...

Matter.js 插件:matter-wrap(世界是圆的)

本文简介 点赞 关注 收藏 学会了 记得以前看爆笑校园里有一集讲到,一个人对着前面开了一枪,过了一阵子弹打中他自己的后脑勺。作者想通过这个冷笑话告诉大家一件事:地球是圆的。 在 Matter.js 世界里,默认是没有边界的&#…...

HCIA --- ACL(访问控制列表)

ACL访问控制列表 一、作用 访问控制 --- 在路由器流量进或出的接口上,匹配流量产生动作---允许、拒绝定义感兴趣流量 --- 抓取流量,之后给到其他的策略,让其他策略进行工作; 二、匹配规则 至上而下逐一匹配,上条匹…...

Xcode自定义快捷键

一、新建脚本 1. 编写脚本 把脚本sh文件保存在安全的目录,不会被删除 我这里主要是两个常用的: 1.打开终端: xcode-terminal.sh #!/bin/shif [ -n "$XcodeProjectPath" ]; then open -a Terminal "$XcodeProjectPath"/.. elseo…...

jmeter界面压测过程卡死解决思路

1、排查压测机的资源是否充足; 2、检查jmeter压测脚本,除聚合报告的所有组件关闭; 我在压测过程中出现频繁卡死,就是查看结果数和断言结果信息量过多导致: 3、直接用非gui界面形式,也就是脚本形式压测。...

听GPT 讲Rust源代码--library/std(6)

题图来自 Why you should use Python and Rust together[1] File: rust/library/std/src/sys/unix/thread_parking/netbsd.rs 文件netbsd.rs位于Rust源代码的rust/library/std/src/sys/unix/thread_parking目录下。该文件是Rust标准库中用于Unix操作系统的线程等待和唤醒机制的…...

如何使用gpt提高效率

如何使用gpt提高效率 自动化替代人力工作减少创意工作需求技术依赖风险实际应用领域内容生成自动回答问题自动化编程个性化推荐 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅&…...

配置VUE环境过程中 npm报错的处理方案以及VUE环境搭建过程

背景:VUE已经出来很久了,一直想研究这个东西也很久了。由于各种各样的原因,一直没有能处理。最近终于有时间可以研究了。 奈何报错了 嘤嘤嘤~~ 针对报错情况,其实后来没有找到什么好的方案,几经周折,终于搭…...

springboot 配置文件加载顺序

SpringBoot中配置文件的加载顺序是怎样的? 优先级从高到低,高优先级的配置覆盖低优先级的配置,所有配置会形成互补配置。 1.命令行参数。所有的配置都可以在命令行上进行指定; 2.Java系统属性(System.getProperties0) ; 3.操作系统环境变量 4.jar包外…...

二分查找java

一、题目。 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4…...

深入理解Java中的转义字符

最近在学习《两周自制脚本语言》这本书,在词法分析的一些复杂的正则中用到了大量的转义字符’\,比如正则字符串中包含了这个部分\\\\\"你知道它是匹配什么的么? 反斜杠在字符串和正则表达式中都有特殊作用。今天让我们来深入理解一下Ja…...

VScode 调试 linux内核

VScode 调试 linux内核 这里调试的 linux 内核是通过 LinuxSD卡(rootfs)运行的内核 gdb 命令行调试 编辑 /home/tyustli/.gdbinit 文件,参考 【GDB】 .gdbinit 文件 set auto-load safe-path /home/tyustli/code/open_source/kernel/linux-6.5.7/.gdbinit在 lin…...

Babylonjs学习笔记(五)——创建PBR材质

书接上回,这里讨论PBR材质!!! // 创建天空盒/* */const createSkyBox (scene:Scene):void>{const envTex CubeTexture.CreateFromPrefilteredData(./env/environment.env,scene)scene.environmentTexture envTex;scene.cre…...

C++ -- 深入理解多态

前言:多态的概念,通俗地来讲就是多种形态。当我们要完成某个行为的时候,不同的对象去完成时会产生不同的状态,这就叫做多态。具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态。多态在C的类和对象中…...

【Java】泛型通配符

类型通配符 类型通配符<?> 一般用于接受使用&#xff0c;不能够做添加List<?>&#xff1a;表示元素类型未知的list&#xff0c;它的元素可以匹配任何类型带通配符的List仅表示它是各种泛型List的父类&#xff0c;并不能把元素添加到其中类型通配符上限&#xff1…...

NNDL:作业五

习题4-1 对于一个神经元,并使用梯度下降优化参数w时,如果输入x恒大于0,其收敛速度会比零均值化的输入更慢. 证明&#xff1a; 激活函数以sigmoid为例。 神经元&#xff1a;有两层&#xff0c;线性层和激活层&#xff1a;yw*xb,然后y‘sigmoid(y)&#xff0c;也就是。 梯度…...

OpenAI大模型项目计划表(InsCode AI 创作助手)

OpenAI大模型项目计划表 阶段任务负责人开始日期完成日期立项确定项目目标和范围项目经理2023-05-012023-05-03确定项目团队和资源项目经理2023-05-042023-05-05确定项目时间表和里程碑项目经理2023-05-062023-05-10数据收集收集训练数据和标注数据团队2023-05-112023-05-20确…...

MyBatis入门的第一个程序

2023.10.28 今天正式开始MyBatis的学习&#xff0c;先来一个入门程序的编写。 ①准备一个数据库表&#xff1a; ②配置pom.xml文件&#xff1a;&#xff08;打包方式和2个依赖的引入&#xff09; <?xml version"1.0" encoding"UTF-8"?> <proj…...

React项目中使用zustand状态管理详细教程

zustand 是一个用于状态管理的小巧而强大的库&#xff0c;它与 React 非常兼容。以下是使用 zustand 在 React 项目中进行状态管理的详细教程&#xff1a; 步骤 1&#xff1a;安装 zustand 首先&#xff0c;你需要安装 zustand。你可以使用 npm 或 yarn 安装它&#xff1a; …...

Linux 扩展 root 文件系统

本文描述的是通过Linux自带的工具&#xff0c;不用安装额外的包&#xff0c;来实现root文件系统的扩展。 我们可以看到&#xff0c;根盘46.6G&#xff1a; # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 46.6G 0 disk ├─sda1 …...

华为ENSP OSPF实验避坑指南:配置Stub区域、路由聚合与DR选举的常见错误

华为ENSP OSPF实验避坑指南&#xff1a;配置Stub区域、路由聚合与DR选举的常见错误 在华为ENSP模拟环境中进行OSPF多区域配置时&#xff0c;即使是经验丰富的网络工程师也难免会遇到各种"坑"。本文将从实际排错角度出发&#xff0c;深入剖析Stub区域配置、路由聚合计…...

一阶RC滤波在DSP中离散实现

一、电路与连续域模型该电路是一个典型的一阶 RC 低通滤波器&#xff1a;输入&#xff1a;Vin输出&#xff1a;Vo结构&#xff1a;串联电阻 R&#xff0c;并联电容 C1️⃣ 传递函数推导电容阻抗&#xff1a;Zc 1 / (sC)电压分压得到&#xff1a;Vo / Vin (1 / (sC)) / (R 1 …...

爱邦保险:全国全牌照保险经纪领航者

爱邦保险经纪有限公司&#xff08;以下简称“爱邦保险”&#xff09;作为一家全国性保险经纪公司&#xff0c;据公开的工商信息及金融监管备案显示&#xff0c;爱邦保险是是经江苏省人民政府同意、中国保险监督管理委员会批准设立的一家全国性全牌照保险经纪公司&#xff0c;具…...

手把手教你拆解Coze‘城市觉醒’工作流:从提示词工程到插件调用的保姆级避坑指南

深度拆解Coze“城市觉醒”工作流&#xff1a;从提示词优化到插件调用的高阶实践 清晨五点的城市天际线逐渐亮起&#xff0c;高楼的轮廓在晨雾中若隐若现——这种充满电影感的画面&#xff0c;过去需要专业团队耗费数周时间拍摄剪辑。如今&#xff0c;借助Coze平台的工作流能力&…...

手把手教你离线部署Selenium:从下载到安装的完整指南

1. 为什么需要离线安装Selenium&#xff1f; 在实际开发中&#xff0c;我们经常会遇到一些特殊环境&#xff1a;比如企业内网开发机、保密项目服务器&#xff0c;或者网络条件受限的生产环境。这些地方往往无法直接联网安装Python包&#xff0c;这时候就需要掌握离线安装技能。…...

ThinkPad散热控制新境界:TPFanCtrl2全方位应用指南

ThinkPad散热控制新境界&#xff1a;TPFanCtrl2全方位应用指南 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 一、核心价值解析&#xff1a;为何选择TPFanCtrl2 突破…...

已过期域名对SEO优化有什么影响

已过期域名对SEO优化有什么影响 在当今数字化时代&#xff0c;网站的搜索引擎优化&#xff08;SEO&#xff09;对于吸引流量和提升品牌知名度至关重要。域名作为网站的身份标志&#xff0c;其质量和历史往往对SEO有着深远影响。本文将探讨已过期域名对SEO优化有什么影响&#…...

7大核心优势!D3KeyHelper暗黑3智能宏工具全面解析:从手动操作到自动化体验的升级之路

7大核心优势&#xff01;D3KeyHelper暗黑3智能宏工具全面解析&#xff1a;从手动操作到自动化体验的升级之路 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelp…...

PromptSource与环保科技NLP:环境数据分析的提示工程指南

PromptSource与环保科技NLP&#xff1a;环境数据分析的提示工程指南 【免费下载链接】promptsource Toolkit for creating, sharing and using natural language prompts. 项目地址: https://gitcode.com/gh_mirrors/pr/promptsource 在当今环保科技领域&#xff0c;自然…...

OmX与低代码开发:加速应用构建的终极AI工具指南

OmX与低代码开发&#xff1a;加速应用构建的终极AI工具指南 【免费下载链接】oh-my-codex OmX - Oh My codeX: Your codex is not alone. Add hooks, agent teams, HUDs, and so much more. 项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-codex 在当今快速发…...