Java内存机制

详解TCP/IP五层模型 TCP/IP模型是一个网络通信体系结构,由五层组成,每一层都有其特定的功能。应用层传输层网络层数据链路层物理层每一层都有不同的责任,通过这种层次结构,网络通信可以更有效地进行。 阅读详情

Java 内存机制

学习Java内存机制

基本类型 VS 引用类型

  1. 基本类型,它的值就是一个数字,一个字符或一个布尔值。java中有四类八种:
    四类:1,整型 2,浮点型 3,字符型4,逻辑型
    八种:byte,short,char,int,long,float,double,boolean
  2. 引用类型:是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。1

堆和栈 2

Java中的内存分为堆和栈。
栈:
1. 基本类型的变量和对象或者数组的引用变量会被存放在栈里,
2. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。
3. 优势是存取速度快,存在栈中的数据可以共享
4. 缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

堆:
1. 堆内存用来存放由new创建的对象和数组。
2. 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
3. Java的堆是一个运行时数据区,堆是由垃圾回收来负责的
4. 堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,
5. 缺点是,由于要在运行时动态分配内存,存取速度较慢。

因其各自的优势,栈被用来执行程序,堆被用来存放对象。
与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。

总结

一张图总结下以上说的内容:
Java内存机制

应用

  1. C/C++的函数中返回一个数组(局部变量)的指针是会造成错误的,Java中为什么就能返回一个局部变量表示的数组呢? 代码注释中给了一种解释3,还有一种解释是该java程序是通过new来创建数组的,在C++中如果也通过new的方式来创建数组的话,也是可以返回数组指针的。4
private static int[] Create_Array(int len){
    // array放在堆中 在 java 里,由于是进行引用传递,他会在每一次对象赋值的时候进行引用计数,
    // 如果计数不为0,就不会回收局部变量,那么也就不会造成消失的问题 也就是当没有引用指向它的时候,
    // 垃圾收集器会在适当的时候 把他清除。以上就是JAVA运行机制中的一部分(垃圾收集)
    int[] array = new int[len];

    // 生成随机数
    for(int i = 0; i < len; i ++){
        array[i] = (int)(Math.random() * 100);
    }
    return array;
}
  1. 待续

  1. java中的引用类型和值类型的区别 https://juejin.im/post/59fd383a51882561a3264e4d ↩
  2. Java内存机制,内存地址 http://www.cnblogs.com/IT-Monkey/p/3640596.html ↩
  3. Java和C的区别:关于调用函数返回局部变量 https://bbs.youkuaiyun.com/topics/390901375 ↩
  4. 【C++基础之三】函数中局部变量的返回 https://blog.youkuaiyun.com/jackystudio/article/details/11523353 ↩
基于单片机设计的智能消防排烟窗控制系统_422 随着城市化进程的不断加快,高层建筑、大型商业综合体以及地下空间的数量迅速增加,建筑内部结构日趋复杂,一旦发生火灾,烟雾和有毒气体往往比明火更具威胁性。大量研究表明,在火灾事故中,人员伤亡的主要原因并非直接烧伤,而是由于吸入烟雾及一氧化碳等有毒气体导致窒息。因此,如何在火灾初期快速排烟、降低有害气体浓度,并及时进行预警,成为现代消防系统设计中的关键问题。传统的消防排烟系统多依赖人工操作或简单的联动控制方式,存在响应滞后、自动化程度低、信息反馈不及时等问题。在实际应用中,当火灾发生时,如果不能第一时间开启排烟窗 阅读详情

相关推荐

西门子Industrial Copilot实战:5个工业场景下的AI效率提升案例

本文通过五个工业场景实战案例,深入解析西门子Industrial Copilot如何将工业智能转化为实际生产力。从自动化配置、预测性维护到能源优化与人机交互,这位AI助手显著缩短工程周期、提升设备可用率并降低运营成本,展示了其在工业领域系统化、工程化的落地价值。

3c4x5z6v7b的博客 925

Java的内存机制

Java的内存机制 Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后(比如,在函数A中调用函数B,在函数B中定义变量a,变量a的作用域只是函数B,在函数B运行完以后,变量a会自动被销毁。分配给它的内存会被回收),Jav...

java03_15的博客 2465

DeepSpeed Zero3 Offload实战:从GCC版本检查到环境配置的完整避坑指南

本文是一份针对DeepSpeed Zero3 Offload部署的完整避坑指南。针对训练中常见的`AttributeError: ‘DeepSpeedCPUAdam‘ object has no attribute ‘ds_opt_adam`报错,文章深入剖析了其根源在于GCC编译器版本过低。指南提供了从系统GCC版本深度探查、安全启用高版本GCC环境,到DeepSpeed一致性安装验证的全链路实战方案,旨在帮助用户构建稳定的大模型训练环境。

weixin_29070721的博客 473

Java的内存管理机制

大概了解Java的内存管理机制

WZX17307935391的博客 1363

基于步科(Kinco HMI 2.5)的组态软件使用

本篇介绍Kinco HMI 2.5的组态软件使用,图标如下 目录   一、新建工程并配置连接 1.1 根据工程选择PLC与HMI型号 1.2 配置PLC连接与选项 二、组态画面编辑 2.1 打开画面窗口 2.2 编辑画面 2.3 组态变量与PLC程序变量连接 三、组态程序下载到HMI 3.1 连接 3.2 编译 3.3 下载 一、新建工程并配置连接 1.1 根据工...

ACanswer的专栏 1万+

模拟IC实战—30天精通Sigma-delta(Σ-Δ) ADC 行为级建模与仿真

本文为模拟IC工程师提供了一套为期30天的Sigma-delta ADC行为级建模与仿真实战指南。文章深入浅出地阐释了Sigma-delta ADC如何通过过采样和噪声整形两大核心技术实现高精度转换,并重点演示了如何使用Python从零搭建一阶和二阶调制器模型,进行性能仿真与关键指标分析,为后续电路级设计提供清晰的性能预算和架构指导。

weixin_29237635的博客 398

JAVA内存机制

Java 内存机制是 Java 程序运行的基础,主要包括内存分配和内存回收两部分,它管理着程序运行时的内存使用,确保程序的高效稳定运行。

weixin_62697548的博客 532

基于本地知识库的智能问答系统架构

智能问答系统的核心可以分为4部分。1)知识库构建。2)检索。3)后处理。4)推理。知识库构建:知识库中可以包含多个向量数据库和知识图谱等,核心是怎么建立索引,使得检索时能够将与问题相关的知识给检索出来。检索:从知识库中的多个库或者知识图谱中检索出与问题相关的信息。后处理:从知识库中检索出来的信息可能是冗余的,而且可能不符合我们希望的格式要求,因此,我们需要对这些数据进行过滤,格式化等操作。推理: 基于检索出来的知识进行推理,让输出能够回答用户的问题,目前主要使用大模型进行推理。

qq_44993593的博客 1709

java内存机制

Java的内存机制 Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后(比如,在函数A中调用函数B,在函数B中定义变量a,变量a的作用域只是函数B,在函数B运行完以后,变量a会自动被销毁。分配给它的内存会被回收),Java ...

小太阳 150

一、DMSP/OLS、NPP/VIIRS等夜间灯光数据能源碳排放空间化理论介绍

利用DMSP/OLS、NPP/VIIRS等夜间灯光数据开展能源碳排放空间化之前,需要区分与利用夜间灯光数据GDP空间化,两者操作流程并无较大区别,只是GDP空间化选择夜间灯光指数种类有比较多包括总灯光指数、平均灯光指数、综合灯光指数等,但是能源碳排放过程中通常只选择总灯光指数,其次能源碳排放空间化可能对于某些省份工业相对没有那么发达的区域,构建模型时候拟合效果比较差,也就是R方低一些或者显著性差。针对上述拟合度低的情况诸多学者前辈从多个方面开展研究进行提升。

端木宛白的博客家园 4924

【思博伦】史上最详细Spirent TestCenter测试仪使用教程精讲(一)!图解超赞超详细!!!

3. 在弹出的界面中,找到菜单栏中的“Connect/Create”,选择下拉框中的“Connect to Physical/Visual Chassis”,在弹出的对话框中输入思博伦测试仪的IP地址:192.168.6.244,点击“OK”;说明:目前我们只需要使用到Raw Stream Block,不需要用到Bound Stream Block。说明:如果要使用100G模式,由于硬件限制,必须连续3个面板端口同时配置为100G使用。打开安装包,并按照提示按照即可。

风云说通信 6478

java的内存机制

认识java的内存机制。 在Java里内存分成两种:一种是栈内存,一种是堆内存。 栈内存 在函数中定义的一些基本类型的局部变量和对象的引用变量都是在函数的栈内存中分配。 比如下面的代码中,变量i是基本类型的局部变量,变量blue是引用变量,都在栈内存中分配. public void test(){ int i = 0; } BlueCola blue = new BlueCola(); 当在一段代码块中使一个变量有值时,Java 就在栈中为这个变量分配内存空间 当局部变量的作用域不再被使用后

weixin_44628067的博客 158

【Burp入门第二篇】Chrome配置BurpSuite代理教程

1、配置Burp代理为127.0.0.1:80802、扩展商店添加插件switchyomega,修改服务器和端口为下图:3、打开代理,选择刚才添加的代理

等风来 8368

JAVA堆栈内存机制

Java的内存机制  Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后(比如,在函数A中调用函数B,在函数B中定义变量a,变量a的作用域只是函数B,在函数B运行完以后,变量a会自动被销毁。分配给它的内存会被回收),Java

奥利奥泡馍的专栏 488

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java 内存的使用流程与机制

基本数据类型和局部变量在栈内存中分配,生命周期随方法的执行结束而结束。对象在堆内存中分配,JVM 通过垃圾回收机制自动管理对象的生命周期。静态变量和字符串常量存储在方法区,生命周期与类的生命周期一致。字符串常量池通过优化重复字符串的内存使用来提升性能。

小萌学习笔记 1145

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: Python装饰器
下一篇: Joel Spolsky给计算机专业学生的七个建议
T9257
博客等级 码龄11年 6粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值