`
leearnold
  • 浏览: 68468 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对象在内存中的存储机制

    博客分类:
  • Java
 
阅读更多

数据类型和对象在内存中的处理方法是有差别的。拿数组举例

 

 

 

数组建立时候会在内存中分别存放到两个地方

数组的元素会被放在堆(heap)中,数组引用变量存储在栈(stack)中.

下面的程序输出可以说明这个问题,数组变量只是引用地址.

现在我明白2000年写代码的时候把HashTable放到数组中,为什么改变的时候不是我想的样子了.

下面的代码非常简单,但是我把他变成面试题,真正写对的人数少的让人惊讶(面试大约50人左右只有2个人答对了).

run-main:
3:4
----------a---------
3
4
5
----------b---------
0
0
0
0
-------------------
----------a---------
3
4
5
----------b---------
3
4
5
-------------------
----------a---------
3
99
5
----------b---------
3
99
5
成功生成(总时间:4 秒)

 

 

 

分享到:
评论

相关推荐

    探讨Java的对象是怎么在内存中产生的?

    ### 探讨Java的对象在内存中产生的机制 #### 一、引言 Java作为一种主流的面向对象编程语言,其对象的创建与管理是程序运行的基础。本文将详细探讨Java对象在JVM中的创建过程以及其内存布局,帮助读者更深入地理解...

    C++对象内存布局[归类].pdf

    C++对象内存布局是指在C++编程语言中对象在内存中的存储结构和布局方式。了解C++对象的内存布局对于理解C++编程语言的对象模型和内存管理机制非常重要。 从内存布局的角度来看,C++对象可以分为三部分:对象头、...

    在实例化对象的过程中需要在内存中开辟空间,这其中就包括栈内存和对内存。

    - **栈内存**: `per` 变量存储在栈内存中,它是一个引用变量,指向堆内存中的对象。 - **堆内存**: 对象的实际数据(`name`, `age`)存储在堆内存中。由于 `per` 仅被实例化而未赋值,所以 `name` 的默认值为 `null`,...

    C#内存管理机制C#内存管理机制

    垃圾收集器是C#中的一个机制,它负责清理内存中的垃圾对象。垃圾收集器可以在程序员不需要手动管理内存的情况下自动清理内存。但是在某些情况下,程序员可能需要强制垃圾收集器在代码的某个地方运行,释放内存。 C#...

    Java中的各种数据类型在内存的的存储方式

    Java中的各种数据类型在内存的存储方式 Java中的数据类型可以分为基本类型和引用类型两种。基本类型包括整数、浮点数、字符、布尔值等,引用类型包括类、数组、接口等。不同的数据类型在内存中的存储方式也不同。 ...

    Java的内存管理机制分析

    `new String("abc")`则是新创建的对象,存储在堆中,并且该对象引用指向常量池中的`"abc"`。 - 对于数组等复合类型,也通过`new`操作符在堆中分配内存。 3. **数据段的分配**: - **静态域**:静态变量存储在此处...

    java 对象 内存 大小

    在Java编程语言中,了解对象内存大小是优化内存使用、提高程序性能的关键步骤。当我们谈论“Java对象内存大小”时,我们通常指的是一个Java对象在内存中占据的空间,包括对象头、实例字段以及可能的对齐填充。这个...

    JavaScript 内存机制分析

    - `b`和`c`是引用数据类型,它们的引用存储在栈内存中,而实际的对象或数组存储在堆内存中。 ### 深入理解引用数据类型 理解了基础概念之后,让我们进一步探讨引用数据类型的特点: 1. **引用传递**:当我们把一...

    java内存对象分配过程研究

    在Java中,对象的创建主要包括定义对象变量和构造对象两个步骤,而构造对象的过程又分为为对象分配内存和初始化对象两个阶段。 ##### 3.1 定义对象变量 定义对象变量实际上就是定义一个指向对象的引用,例如: ```...

    vb菜单在内存的存储

    对于深入理解菜单系统的内部机制而言,了解其在内存中的存储方式是非常重要的。本文将基于提供的文件信息,详细探讨vb菜单在内存中的存储方式,以及如何通过窗体内一个菜单的地址来枚举窗体的所有菜单项。 #### vb...

    SPARK内存管理机制最全!

    在Spark 1.5及之后版本中,引入了统一的内存管理机制,将堆内存划分为执行(Execution)内存和存储(Storage)内存两部分。执行内存用于任务运行时的数据处理,如shuffle、join、sort以及聚合操作;存储内存则用于...

    Java核心基础+Java中的数据在内存中的存储

    #### 二、Java中数据的内存存储方式 **2.1 基本数据类型的存储** Java的基本数据类型包括`int`、`short`、`long`、`byte`、`float`、`double`、`boolean`和`char`。这些类型的数据通常存储在栈中,因为它们的大小...

    Java存储数据机制

    这样,当函数调用结束,栈内存中的引用会消失,如果对象没有其他引用指向,垃圾回收器会在适当的时候回收该对象。 3. 局部变量,包括基本类型和对象的引用,都存储在栈内存中。当函数或方法执行完毕,这些局部变量...

    安卓kernel 内存回收机制

    8. 垃圾收集机制:在安卓系统中,Java虚拟机负责执行垃圾收集(Garbage Collection)过程,这一过程能够回收不再使用的对象占用的内存空间。 通过上述的内存回收机制,安卓系统能够在有限的硬件条件下,提供稳定且...

    java内存机制及异常处理

    Java内存机制是Java虚拟机(JVM)的关键组成部分,它管理着程序运行时的数据存储。在Java中,内存主要分为以下几个区域: 1. **Heap(堆)**:这是Java中最主要的内存区域,用于存储所有的类实例和数组。当堆空间...

    Java内存使用系列一Java对象的内存占用Java开发J

    在Java编程语言中,了解对象的内存占用是优化应用程序性能的关键。这个“Java内存使用系列一Java对象的内存占用”主题旨在深入探讨Java对象在内存中的表现,以及如何有效地管理这些资源。Java开发人员需要理解内存...

    ART运行时CompactingGC为新创建对象分配内存的过程分析.docx

    在Android的ART运行时环境中,内存管理是一个至关重要的部分,特别是在处理大量对象创建和销毁的电子商务应用中。本文将深入探讨ART运行时引入的Compacting GC(垃圾收集器)如何为新创建的对象分配内存,以及它如何...

    03-VIP-JVM内存分配机制与垃圾回收算法1

    Java虚拟机(JVM)内存分配机制和垃圾回收(Garbage Collection, GC)是Java编程中的核心概念,它们直接影响到程序的性能和稳定性。本文主要围绕JVM内存区域的分配策略,尤其是对象在新生代(Young Generation)的...

    java内存分配机制详解

    本文旨在详细介绍Java内存分配机制中的几个关键概念:寄存器、栈、堆、静态域、常量池及其在Java运行时环境中的角色与功能。 #### 二、Java内存分配机制概述 Java内存分配主要涉及以下几个区域: 1. **寄存器**:...

Global site tag (gtag.js) - Google Analytics