当前位置: 首页 > 知识库问答 >
问题:

在Java中,一个空类占用多少空间?[副本]

万俟旭
2023-03-14

在一次采访中,有人问我一个与Java相关的问题:“在Java中,一个空类要占用多少空间?”对此没有好的答案。“

共有1个答案

谭志用
2023-03-14

见官方文件

...空结构/类的大小是一个字节,对于调用函数来说,至少空结构/类应该有一定的大小(至少需要1个字节),即一个字节。使它们可以区分。

...

如果一个类有多个对象,它们可以有不同的唯一内存位置。假设,如果一个类没有任何大小,那么在内存位置上将存储什么?这就是为什么当我们创建一个空类的对象时,它需要一些内存来存储,而可以保留的最小内存量是1字节。因此,如果我们创建一个空类的多个对象,每个对象都将具有唯一的地址。

下面的代码显示了空类的大小-

    #include<iostream>
    using namespace std;
    //Creating a Empty Class
    class Empty_class
    {
    };
    // main starts
    int main()
    {
      cout <<"Size of Empty Class is = "<< sizeof(Empty_class);
      return 0;
    }

输出

   Size of Empty Class is = 1
    #include<iostream>
    using namespace std;
 
    class Empty { };
 
    int main()
    {
        Empty a, b;
 
        if (&a == &b)
          cout << "impossible " << endl;
        else
          cout << "Fine " << endl;
 
       return 0;
    }
   Fine

出于同样的原因(不同的对象应该有不同的地址),“new”总是返回指向不同对象的指针。

 类似资料:
  • 问题内容: 我正在尝试计算这将占用多少空间(Mb)。在数据库表中,有7位列,2个微小的int和1个guid。 尝试计算将占用16000行的数量。 我的想法是,7位列占用1个字节,2个小整数占用2个字节,guid占用16个字节。表中的每一行总计19byte?那将意味着304000字节用于16000行,或者〜0.3mbs正确吗?是否还有元数据字节? 问题答案: 那里有几个估算器可以代替驴工作 您必须考

  • 本文向大家介绍如何计算Java对象占用了多少空间?,包括了如何计算Java对象占用了多少空间?的使用技巧和注意事项,需要的朋友参考一下 本文介绍了计算Java对象占用了多少空间的方法,分享给大家供大家参考,具体内容如下 一、对象头 对象的头部至少有两个WORD,如果是数组的话,那么三个WORD,内容如下: 1、对象的HashCode,锁信息等 2、到对象类型数据的指针 3、数组的长度(如果是数组的

  • 问题内容: 我正在尝试测试Java中自动装箱和拆箱的速度,但是当我尝试将其与基元上的空循环进行比较时,我注意到了一件奇怪的事情。此代码段: 每次运行此命令,它都会返回相同的结果: 为什么前两个循环总是要花一些时间,而其余的似乎只是被系统跳过了? 在这篇文章的答案中,据说即时编译将能够对此进行优化。但是,如果是这样,为什么前两个循环仍然需要一些时间? 问题答案: 在多次执行某段代码后,JIT会触发。

  • 问题内容: 我想知道为什么numpy.zeros占用这么小的空间? 这不会占用任何内存, 占用约1.5GB。numpy.zeros是否创建一个空指针数组?如果是这样,是否可以在cython中更改指针后将其设置为空?如果我使用: 内存使用率上升。有没有办法更改一个值,然后将其更改回numpy.zeros的格式,最初是在python或cython中使用的? 问题答案: 您在使用Linux吗?Linux

  • 问题内容: 考虑以下示例: 准备数据: 设置HDF5的最高压缩率: 另存为CSV: 结果是: 5.6 MB大 11 MB大 数据集越大,差异越大。 我尝试了其他压缩方法和级别。这是一个错误吗?(我正在使用Pandas 0.11和HDF5和Python的最新稳定版本)。 问题答案: 我从问题中得到的答案的副本:https : //github.com/pydata/pandas/issues/365

  • 只显示7-9个图像。 显示n个图像。 当我创建一个文件时,由于系统完全错误而导致写入错误。我试图创建符号链接。但是我不能搬动码头工人的东西。 删除/var/lib/docker/graph下的所有内容好吗?除了创建符号链接和扩展磁盘之外,还有什么其他可能性?我宁愿删除不必要的东西。