博客
关于我
在内存中java类和对象的区别
阅读量:529 次
发布时间:2019-03-09

本文共 718 字,大约阅读时间需要 2 分钟。

在内存中,Java类和对象的差异解析

Java类与对象在内存中的区别主要体现在以下几个方面:

  • 类的内存占用与构造方式
  • 类在内存中的存储是静态的,由编译器在链接阶段确定,通常位于方法区或本地方法区中。这些信息在运行时成为静态值。类本身并不占用动态堆内存,直到需要创建类的实例(对象)时,内存才会被分配。

    1. 对象的内存分配与构造
    2. 对象由new操作符调用构造器创建,它们的内存由运行时堆自动分配。由于对象的数量和内存大小在编译时无法预知,只有在运行时根据需求动态分配内存。这使得对象的内存分配具有高度的灵活性。

      1. 静态和非静态成员的共享机制
      2. 静态成员(包括静态变量和静态方法)在整个应用程序中只有一份拷贝。无论有多少对象访问静态成员,都共享同一份内存。非静态成员(如实例变量和非静态方法)则每个对象独立占用内存空间,具有各自的单独拷贝。

        1. 内存占用的动态特性
        2. 在添加一个对象实例时,该实例及其相关的堆内存都会被分配。这个过程与类本身的结构无关,而是由堆中的内存管理系统(如G NSK和分堆/分堆优化)自行分配。这意味着不同的对象可能占用不同的堆空间大小。

          1. 对方法调用内存的影响
          2. 对于非静态方法调用,差别在于调用方法时会在操作栈中加载相关信息,并绕入受保护的指针和常量池中的指针。这样,虽然方法在所有对象之间共享一份常量池中的方法指针和类指针,但是在执行时会分配线程栈内存空间以支持调用。

            通过以上分析可以看出,类作为调用和描述对象的元信息,具有静态、编译时确定的性质,而对象则是由动态内存分配创建的,适合用来保存一次性的Java实例数据。在程序运行中,Java类和对象共同运作,确保内存管理的双层结构,既保持了计算效率,又提供了灵活的内存使用能力。

    转载地址:http://kmliz.baihongyu.com/

    你可能感兴趣的文章
    Java 并发编程概念深入理解
    查看>>
    Java 并发编程CyclicBarrier的应用与源码解析(基于ReentrantLock实现)
    查看>>
    Beyond Compare4 过期解决方法
    查看>>
    多机免密登录自动化脚本
    查看>>
    VTK:可视化之PointSize
    查看>>
    VTK:可视化之RandomProbe
    查看>>
    VTK:可视化之StructuredDataTypes
    查看>>
    VTK:可视化算法之Cutter
    查看>>
    VTK:可视化算法之ProbeCombustor
    查看>>
    block多队列分析 - 2. block多队列的初始化
    查看>>
    Java时间
    查看>>
    不编译只打包system或者vendor image命令
    查看>>
    Linux系统版本控制历史
    查看>>
    HTML、CSS、JS文件加载顺序及执行情况
    查看>>
    MySQL
    查看>>
    The wxWindows Library Licence (WXwindows)
    查看>>
    linux centos7 gcc4.85 升级到gcc7.4.0
    查看>>
    十一届省赛总结
    查看>>
    leetcode——第203题——虚拟头结点
    查看>>
    leetcode——第1047题——删除字符串中的相邻重复子串
    查看>>