java类的大小是否会影响应用程序的性能

时间:2012-09-18 10:02:24

标签: java performance swing jtable tablecelleditor

我正在使用基于swing的应用程序,我使用JTable。我使用DefaultCellEditor作为需要组合框选择的列之一。但DefaultCellEditor有许多我不需要的方法。所以我通过扩展AbstractCellEditor编写了一个自定义的CellEditor,我只实现了所需的方法。我的问题是

(一般情况下)如果我们有一个类,如果我们不需要该类的所有方法就可以使用它,或者编写一个自定义类是不是很好,我们只实现了我们需要的那些方法?和

通过使用自定义类,应用程序的性能(内存方式)是否会得到改善,或者它与具有所有方法的类保持一致?

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:15)

除非你有充分理由认为应用程序中没有任何其他东西,包括JDK本身使用DefaultCellEditor,,否则你几乎肯定会因为事情变得更糟而浪费你的时间。

您还需要考虑在极端情况下可能已经保存了大约100k的代码,其中典型的JVMS使用大约一千兆字节来执行。所以你可能已经节省了0.01%的代码空间。这不是你的时间的有效利用。正确的程序是在事后测试和测量时间和空间瓶颈的确切位置。众所周知,程序员在预测这些事情方面很差。

答案 1 :(得分:3)

此类的代码(实际字节码)仅在内存的PermGen区域中加载一次,无论您实例化此类型的对象有多少。

我不接受此代码,因为您正在复制已经可用的功能,并且您没有向AbstractCellEditor添加功能,您正在重新实现DefaultCellEditor中已经存在的代码(希望如此) )由Oracle(或Sun)测试。

正如EJP所说,引入错误并不值得花时间和潜力。

答案 2 :(得分:1)

如果创建包含较少成员对象的自定义类,则内存占用量将会降低。方法的数量不会影响对象的大小,只会影响类的大小。

一般情况下,我不会过早地进行优化,除非你确定你确实遇到了问题(即如果你有数千个对象实例,而堆/垃圾收集器日志分析显示你正在颠覆内存和/或有频繁收集旧空间),因为附加代码意味着:

  • 其他维护(您需要确保自定义CellEditor没有错误)
  • 编写自定义代码的额外工作
  • 测试自定义代码的额外工作

AFAIK,CellEditor会在需要时进行实例化,因此无论如何都不会节省太多内存。