`
kidiaoer
  • 浏览: 822226 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java new 一个对象所占内存的问题

阅读更多
Object o=new Object():
    在java中空对象占八个字节,对象的引用占四个字节。所以上面那条语句所占的空间是4byte+8byte=12byte.java中的内存是以8的倍数来分配的,所以分配的内存是16byte.
举个例子:
Class O{
  int i;
  byte j;
  String s;
}
  其所占内存的大小是空对象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整数倍,所以其占大小为 24byte.
   当然,如果类里有其他对象的话,也要把其他对象的空间算进去。
分享到:
评论

相关推荐

    JAVA对象所占内存大小计算例子

    首先,我们需要理解Java对象内存占用的基本原理。每个Java对象都由三部分组成:对象头(Object Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头包含对象引用和类型信息,实例数据是对象实际存储...

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

    Java对象是由类实例化的结果,当我们使用`new`关键字创建一个对象时,实际上经历了以下几个步骤: 1. **类加载检查**:虚拟机首先检查`new`指令的参数是否能在常量池中定位到一个类的符号引用。如果该类尚未被加载...

    Java 对象(数组)占多大空间(几个字节) 手把手做实验

    2. 关闭压缩参数后的对象内存布局: 如果关闭这两项压缩选项,对象引用将变为64位,即8字节。实验显示`Person`对象占用40字节,这是因为对象头的Klass Pointer从4字节增长到8字节,其他部分保持不变,总大小增加了8...

    JAVA中的面向对象与内存解析

    当一个对象不再被引用时,GC会自动回收该对象占用的内存,防止内存泄漏。 在Java中,对象的创建过程涉及内存分配和初始化。当我们使用`new`关键字创建对象时,首先在堆内存中为对象分配空间,然后调用构造函数初始...

    java内存对象分配过程研究

    1. **内存分配**:当使用`new`关键字创建对象时,JVM会在堆上为新对象分配一块内存空间,并返回一个指向这块内存空间的引用。例如: ``` new Color(100, 100, 120); ``` 这里`new`运算符负责为对象分配内存空间...

    Java数组与内存控制

    - 在Java中,数组的声明并不直接分配内存,而仅仅是创建了一个数组引用变量。例如: ```java int[] arr; ``` - 上述声明仅创建了一个引用变量`arr`,它将用来存储一个指向整型数组的引用。此时,数组并未实际...

    Java对象内存布局 - 小分析

    在Java世界中,JVM(Java虚拟机)是运行Java应用程序的关键组件。它负责解析字节码、管理内存以及执行程序。...通过运行这些脚本,我们可以获取更具体的对象内存占用信息,进一步优化我们的Java应用。

    java中对象和对象引用的区别!

    当我们使用`new`关键字创建一个类的实例时,实际上是在内存中分配了一块空间来存储该对象的状态。 - **引用**:引用是用于访问对象的一种方式。简单来说,引用变量保存了对象的内存地址,通过该地址我们可以访问到...

    Java中堆内存与栈内存分配浅析

    当一个对象被创建时,其数据将被分配到堆内存中。堆内存的特点是动态分配,即对象的大小在创建时不确定,且对象的生命周期也较难预测。由于这些特性,堆内存的管理较为复杂,但同时也为Java应用程序提供了极大的灵活...

    java对象在内存中的结构

    当我们创建一个对象,如`Rectangle rect = new Rectangle(3, 5);`,首先在栈中为引用变量rect分配空间,然后在堆中为Rectangle类的成员变量width和height分配内存并初始化。new运算符返回的是堆中对象的引用,这个...

    java new一个对象的过程实例解析

    "Java new一个对象的过程实例解析" Java新建对象的过程是一个复杂的过程,涉及到类加载、链接、初始化和对象创建等多个阶段。在这篇文章中,我们将详细介绍Java新建对象的过程,并通过示例代码对每个阶段进行了详细...

    java核心 内存分配问题

    Java的垃圾回收机制自动管理堆内存,当一个对象不再被任何引用指向时,它将被视为垃圾并被回收。这解决了程序员手动管理内存可能导致的内存泄漏问题。然而,垃圾回收也可能带来性能开销,尤其是在大型系统中。 **...

    java实例化对象的过程

    1. **声明对象**:首先,你需要声明一个对象变量,这只是一个指向实际对象内存空间的引用。例如,`MyClass obj;`。 2. **使用new关键字分配内存**:使用`new`关键字调用类的构造器,为对象分配内存空间。例如,`obj...

    深入理解java对象,包括对象创建和内存分配

    在JVM内部,对象的内存主要分为三个部分: - 帧头(Header):包含对象的类型信息、对齐填充以及用于垃圾收集和同步的元数据。 - 实例变量(Instance Variables):对象的属性和字段,存储实际的数据。 - 对象填充...

    java内存原理.doc

    即使程序运行到使用 new 产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不...

    java 对象克隆

    在Java编程语言中,对象克隆是一种创建一个与原对象具有相同数据的新对象的过程。对象克隆主要用于复制或备份对象,以便在不干扰原始对象的情况下对其进行修改或操作。本篇文章将详细探讨Java中的对象克隆及其实现...

    java 使用静态成员变量计算内存中实例化的对象数目

    如果一个对象不再有任何引用指向它,垃圾回收器就会回收该对象的内存,但`count`不会减少。因此,这种方法对于短期统计和简单示例是有效的,但在复杂或长期运行的系统中,可能需要更精确的方法来跟踪对象的生命周期...

    完美解决java读取excel内存溢出问题.rar

    在Java开发中,处理大型Excel文件时,可能会遇到内存溢出的问题。这通常是由于Java的默认内存设置不足以处理大量数据导致的。本解决方案主要针对使用Apache POI库进行Excel读取时遇到的这类问题。 首先,Apache POI...

    java实现内存动态分配

    当通过`new`关键字创建一个新的对象时,其实际的数据结构和属性值都在堆中分配。由于堆内存是所有线程共享的,因此对象实例的创建和访问需要考虑线程安全问题。 3. **栈内存分配** 栈内存是线程私有的,每个线程都...

Global site tag (gtag.js) - Google Analytics