12

I have a code base and some methods are never used. Does javac remove the unused methods from the class file?

Adam Stelmaszczyk
  • 19,665
  • 4
  • 70
  • 110
CommonMan
  • 3,868
  • 2
  • 24
  • 35

3 Answers3

8

Q: I want to know if I have a code base and some methods are never used. Does javac remove the unused methods from the class file?

A: No. What goes into the class, stays in the class file.

... however ...

The JVM loads only what's needed into memory. RAM isn't "wasted" on unused classes.

paulsm4
  • 114,292
  • 17
  • 138
  • 190
5

No, it doesn't. To verify this, you can run

javap -c foo.bar.MyClass

and see all the code there. You can also access it via reflection (assuming you're running with appropriate permissions).

Jon Skeet
  • 1,421,763
  • 867
  • 9,128
  • 9,194
4

No it doesn't and it can't. Think about what would happen if the compiler did that when you compile a library. All methods that the library wants to export for users, but doesn't use itself would be removed. And there is no way in Java to distinguish between something that is a library and your code.

Jochen
  • 2,277
  • 15
  • 22