【问题标题】:Does javac removes methods that are not referenced in the code?javac 是否会删除代码中未引用的方法?
【发布时间】:2012-03-07 22:30:26
【问题描述】:

我有一个代码库,有些方法从未使用过。 javac 是否从类文件中删除未使用的方法?

【问题讨论】:

  • 如果方法是public,我希望不会。
  • @larsmans:为什么public 如此特别?是因为其他一些代码可能正在使用它们吗?你能详细说明一下吗?

标签: java javac


【解决方案1】:

问:我想知道我是否有一个代码库并且某些方法从未使用过。 javac 会从类文件中删除未使用的方法吗?

A:不。进入类的内容保留在类文件中。

...然而...

JVM 仅将需要的内容加载到内存中。 RAM 不会“浪费”在未使用的类上。

【讨论】:

    【解决方案2】:

    不,它没有。要验证这一点,您可以运行

    javap -c foo.bar.MyClass
    

    并查看那里的所有代码。您也可以通过反射访问它(假设您使用适当的权限运行)。

    【讨论】:

      【解决方案3】:

      不,它没有,也不能。 想想如果编译器在编译库时这样做会发生什么。库想要为用户导出但不使用自身的所有方法都将被删除。 在 Java 中没有办法区分库和代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-27
        • 1970-01-01
        • 2016-08-02
        • 1970-01-01
        • 2013-07-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多