文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中的内存分配

2024-12-03 10:09

关注

[[384034]]

内存分配是JVM [Java虚拟机]的一部分。因此,此时了解Java为什么需要JVM而没有其他语言需要VM的重要性很重要。在许多其他语言中,编译器为特定系统生成机器代码,但是在Java中,Java编译器始终为虚拟机(称为JVM)而不是特定系统生成代码。是JVM,它具有依赖于平台的标签,因此使Java(一种与平台无关的编程语言)成为可能。JVM将Java字节码转换为机器可解释的语言。JVM的两个主要功能是允许Java程序在任何设备或操作系统上运行以及管理和优化程序内存。

内存管理是应用于计算机内存的一种资源管理形式。内存管理的基本要求是提供一种方法,可应程序的要求将部分内存分配给程序,并在不再需要时将其释放以供重用。

为了更好地理解本文,建议您先阅读本文,然后再继续。

如上所述,我们将继续了解有关如何完成内存分配以及在内存不足的情况下会发生什么错误的概念。内存分配是将物理或虚拟内存地址空间分配给进程的操作。

JVM内存分为多个部分:堆、非堆、其他。

内存分配是术语“绑定”的一般方面。假设我们声明了一个类类型的变量并创建了对它的引用。为了将任何值存储到这些变量中,我们必须为其分配内存。因此,我们可以将内存分配称为“将内存地址分配给变量属性的行为”

  1. eg: int a = 10

静态内存分配是指编译器编译程序并生成目标文件时,链接程序将这些目标文件合并为可执行文件,并在加载程序的帮助下将此可执行文件加载到主存储器中。在静态分配执行之前,必须知道进程所需的数据大小,从而使其更有效,从而可以更快地执行进程。动态内存分配在程序执行期间进行。在这里,当程序执行时第一次使用实体时,会为它们分配内存。它减少了内存浪费,因为它分配了实体所需的确切内存空间。

内存管理是操作系统的功能,该操作系统处理主内存并在执行过程中前后移动进程。处理内存管理的一些基本概念可能是进程地址空间,静态|动态加载和链接。

(1) 进程地址空间:它是进程在其代码中引用的一组逻辑地址。操作系统负责在将内存分配给程序时将逻辑地址映射到物理地址。在完成内存分配之前和之后,将使用三种类型的地址。符号地址,相对地址和物理地址…符号地址是源代码中变量名,常量和指令标签所使用的地址。相对地址是在编译时从符号地址转换的地址。当程序加载到主存储器中时,加载器会生成物理地址。在编译时,虚拟和物理地址保持不变,但在执行[运行时]时有所不同。

(2) 静态与动态加载和链接:在开发程序时应决定选择静态还是动态加载。如果我们必须静态地加载程序,那么在编译时,整个程序将被编译和链接,而不会留下任何外部模块依赖性。链接器将目标程序与其他必要的目标模块以及逻辑地址相结合。而如果我们正在加载动态程序,则编译器将编译该程序以及所需的模块依赖关系的引用。该程序将提供。当使用静态链接时,链接器将程序所需的所有其他模块组合到单个可执行程序中,以避免任何运行时依赖性。而在动态链接的情况下,不需要将实际的模块或库与程序链接,而是可以附加对thm的引用。

在声明对象时未分配内存,而是在引用时分配了内存。对于对象的内存分配,使用new()方法,因此对象始终分配在堆内存中。Java内存分配分为“堆”,“堆栈”,“代码”和“静态”部分,以进行有效管理。“代码”部分包含字节码,“堆栈”包含方法,局部变量和引用变量,“堆”部分包含“对象”,还可能包含引用变量,“静态”部分仅包含静态数据。

内存分配中最常见的错误是“ java.lang.OutOfMemoryError”,通常,当JVM由于内存不足而无法分配对象并且垃圾回收器无法再使用更多内存时,通常会引发该错误。

希望本文能帮助您更好地了解Java中的内存分配。

直到下一次…

和平了!

原文链接:https://medium.com/javamadetranquil/memory-allocation-in-java-fb2d4498a3ed

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯