首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java方法的内存开销是多少?

Java方法的内存开销是多少?
EN

Stack Overflow用户
提问于 2009-04-08 14:35:25
回答 7查看 2.5K关注 0票数 14

类中函数的内存开销是多少?

例如,

代码语言:javascript
复制
Class A
{
 int a
}

Class B
{
 int a
 int foo(int);
}

所以A类的100个实例应该是80个字节。那么B类的100个实例呢?

EN

回答 7

Stack Overflow用户

发布于 2009-04-08 16:33:17

开销是...没有。

方法定义和代码地址存储在Class对象中,它有一个唯一的实例,对象的每个实例都指向该实例。由于情况就是这样,无论是否添加了该方法,每个单独对象的开销都是零。

票数 11
EN

Stack Overflow用户

发布于 2009-04-08 14:38:35

80字节,因为对象中不包含方法。除非你也在谈论"vtable“类型的东西,在这种情况下可能有160个字节。

160个字节的说明。如果每个对象分配其自己的vtable (这是一种可能的实现),则将是160。或者(正如评论中指出的),更好的方法是每个类一个vtable,这意味着指向vtable的指针大小为80 +(可能是4或8字节,具体取决于VM)。所以84或88个字节。

整个事情完全取决于VM分配内存和处理非最终方法的方式。如果不知道特定的VM是如何实现的,这两个问题都无法正确回答。

票数 4
EN

Stack Overflow用户

发布于 2009-04-08 14:52:25

至少其他一些人已经说过,该方法不会存储在序列化中。

在此示例中,您可以使用以下代码轻松地执行一个测试来显示这一点。

代码语言:javascript
复制
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;


public class SerializationTest {

    public static void main(String[] args) {
        serialize(true);
        serialize(false);
    }

    public static void serialize(boolean aOrB) {
        FileOutputStream fos = null;
        ObjectOutputStream out = null;
        try {
            fos = new FileOutputStream("output.txt");
            out = new ObjectOutputStream(fos);
            out.writeObject(aOrB ? new A() : new B());
            out.close();
            fos.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        File file = new File("output.txt");
        System.out.println(file.length());
    }

    public static class A implements Serializable {
        int a = 0;
    }

    public static class B implements Serializable {
        int a = 0;

        public int foo(int a) {
            return a;
        }
    }
}

对我来说,这是打印出来的

代码语言:javascript
复制
48
48
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/730321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档