首页 > 系统相关 >Day18.2:对象创建的内存分析图解

Day18.2:对象创建的内存分析图解

时间:2022-11-21 20:56:52浏览次数:40  
标签:存放 Students stu 对象 内存 new Day18.2 图解

对象创建的内存分析

我们从两块最常用的内存空间对对象创建进行内存分析

  • 堆内存:存放的是对象的具体信息;在程序之中堆内存空间的开辟是通过new完成的
  • 栈内存:存放的是对象的地址信息,即通过地址找到堆内存进而找到对象内容,但是为了简化起见,简单理解将对象的名称保存在栈内存中

堆内存内每一块内存都有着一个专属的地址编号,而栈内存则存放这个地址编号

图解如下:

我们来分析一个创建对象的案例

public class test {
    public static void main(String[] args) {
        Students stu = new Students();
        stu.name="工地佬";
        stu.age=18;
    }
}

内存图解:

第一步:Students stu = new Students();

new:在堆内存中开辟新的空间;

Students:定义了对象的信息;存放于所开辟的空间里

stu:对象的名称;存放于栈内存中,实则存放的是新空间的地址信息

第二步:stu.name="工地佬";

第三步:stu.age=18;

对象化的实例化有两种语法:

  • 使用声明并实例化:Student stu=new Students();
  • 分步完成:① 声明对象Student stu=null; ② 实例化对象 stu=new Students();

分步完成实例化的内存分析:

第一步:Student stu=null;

第二步:stu=new Students();

注意

  • 如果代码中只声明了对象,没有实例化,则无法调用。而此时会报错指向异常(NullPointerException),意为没有在辟堆内存开辟空间,即没有new,此异常只有在引用数据类型存在此问题。

标签:存放,Students,stu,对象,内存,new,Day18.2,图解
From: https://www.cnblogs.com/CQliuwei/p/16913181.html

相关文章

  • Kotlin | 这些隐藏的内存陷阱,你应该熟记于心
    引言​​Kotlin​​是一个非常yes的语言,从null安全,支持方法扩展与属性扩展,到内联方法、内联类等,使用Kotlin变得越来越简单舒服。但编程从来不是一件简单的工作,所......
  • 内存四区
         ......
  • innodb中内存管理机制BufferPool
    ​内存结构 InnoDB主索引是聚簇索引,索引与数据共用表空间,对于InnoDB而言,数据就是索引,索引就是数据。InnoDB缓存机制和MyISAM缓存机制的最大区别就是在于,InnoDB不仅仅是缓存......
  • mysql中CPU或内存利用率过高问题
    CPU利用率过高原因在MySQL使用过程中,出现CPU利用率过高甚至超过100%时,与数据库存在低效SQL或大量行锁冲突有非常大的关系,一般都是由于大量低效的SQL导致,出现行锁冲......
  • 17.5 稀疏调拨的内存映射文件--《Windows核心编程》
    原文链接:https://www.likecs.com/show-306421749.html,原文中代码是C++MFC程序,更详细。本文是C语言测试代码。(1)稀疏文件(SparseFile)定义指的是文件中出现大量的0数据,这......
  • 17.1 使用内存映射文件--《Windows核心编程》
    Windows提供了以下三种机制来对内存进行操控虚拟内存:最适合用来管理大量对象数组或者大型数据结构内存映射文件:最适合用来管理大型数据流(通常是文件),以及在同一机器上运......
  • 17.2 内存映射文件的一致性--《Windows核心编程》
    系统允许我们把同一个文件映射到多个视图中,只要映射的是同一个文件映射对象,系统会保证各视图中数据是一致的。例如一个程序修改了一个视图内的内容,那么系统会更新所有其他......
  • 17.3 给内存映射文件指定基地址--《Windows核心编程》
    可以使用MapViewOfFileEx函数,建议系统把文件映射到指定的地址。其他参数与MapViewOfFile相同,最后一个参数pvBaseeAddress指定目标地址。同VirtualAlloc,指定的地址......
  • 48、OAK通过共享内存传递变长结构体(Rapidjson)进行数据和图片交互
    基本思想:主要学习一下在共享内存中传递变长的数据,这样在c#调用c++dll也可以雷同操作,以oak的检测和共享内存为代码整合,集成了rapidjson的使用,代码自己摘要和参考吧cmakelist......
  • 112:对象的浅拷贝和深拷贝_内存分析
    ###对象的浅拷贝和深拷贝·变量的赋值操作只是形成两个变量,实际还是指向同一个对象。·浅拷贝Python拷贝一般都是浅拷贝。拷贝时,对象包含的子对象内容不拷贝。因此,源对象......