栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java私有内部类是否有性能开销?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java私有内部类是否有性能开销?

您是否尝试过编译并比较字节码?这是我的结果。对于:

public class Example {  public static void main(String[] args) {    System.out.println("Hello world!");  }  private static class A {    A(){}  }}

上面产生了以下* .class文件:

-rw-r--r--    1 michaelsafyan  staff   238 Feb 10 00:11 Example$A.class-rw-r--r--    1 michaelsafyan  staff   474 Feb 10 00:11 Example.class

现在,如果我移动类文件,删除

private
修饰符,然后重新编译,则会得到:

 -rw-r--r--    1 michaelsafyan  staff   238 Feb 10 00:15 Example$A.class -rw-r--r--    1 michaelsafyan  staff   474 Feb 10 00:15 Example.class

如果查看类文件上的VM
Spec
,您会发现有一个用于指定访问修饰符的大小固定的位字段,因此生成的文件大小相同也就不足为奇了。

简而言之,您的访问修饰符不会影响生成的字节码的大小(也不会影响性能)。您应该使用最有意义的访问修饰符。

我还应该补充一点,如果将内部类从声明更改

static
为未声明
static
,则会有细微的差别,因为这意味着引用外部类的附加字段。与声明内部类相比
static
,这将占用更多的内存,但是您会为此疯狂地进行优化(
static
在有意义的地方以及需要它为非静态的地方使用,使其成为非静态的,但是不要只为了在这里或那里保存内存指针而使设计复杂化)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508793.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号