许多静态方法会增加程序内存/静态库

时间:2014-04-24 11:46:17

标签: java memory methods static-libraries

我有一个包含大量静态方法的java库,它们可以处理范围之间的getRandom数字,使用随机数填充数组,查找数组的数字统计数据,如平均值和中位数,getValid键盘输入等...我的问题因为可以在没有import语句的情况下使用静态方法,并且不需要使用new关键字进行实例化,如果我只需要在程序中使用一个方法,这个库是否会为其方法占用更多内存

如果我模棱两可,这就是我的意思。我正在创建一个自己的java实用程序库,它有许多实用程序方法。它可能会说100个方法,我将其称为LIBRARY X.现在我正在创建一个新程序PROGRAM Y.程序Y只使用了库中的100个方法中的1个方法,如果我只需要1,将编程Y加载所有100个方法。如果不需要,我怎么能避免加载整个库,或者java只加载程序调用的方法。

3 个答案:

答案 0 :(得分:1)

  

因为可以在没有import语句的情况下使用静态方法

在大多数情况下这是错误的。在Java中,静态方法需要包含在类中,当然,大多数情况下,必须导入这些类。为了调用这些方法,不需要实例化此类的实例。

如果你为每个类组合一个方法(在这个例子中),并且只调用一个方法,那么只加载一个类,因此需要更少的内存。

但你真的不应该关心代码内存消耗。

而且,说实话:100种方法并不多。

答案 1 :(得分:1)

据我所知,当ClassLoader将类加载到内存中时,所有静态内容以及类的静态块都会被初始化。

除非您正在为内存非常珍贵的嵌入式设备进行开发,否则您将不在乎。

如果你的班级成为god班级,你应该关心的是什么。即使它是一个实用程序类,它也只应包含用于特定目的的方法。

前:

StringUtil would contain static methods for string manipulation.
Math2 would contain additional math utility methods.
ValidationUtil would contain methods destined for validation.

您可以做些什么来使您的代码看起来更干净在某些情况下将使用static imports您需要使用这些方法。

请勿滥用静电进口

如果您对每种静态方法滥用它们,您的代码将变得难以维护和阅读。

答案 2 :(得分:0)

读取this帖子,静态变量存储在PermGen部分的位置,因为它们是静态的,不会为类的每个实例再次创建它们,因此如果您创建了许多实例,可以节省内存类。