我有一个包含大量静态方法的java库,它们可以处理范围之间的getRandom数字,使用随机数填充数组,查找数组的数字统计数据,如平均值和中位数,getValid键盘输入等...我的问题因为可以在没有import语句的情况下使用静态方法,并且不需要使用new关键字进行实例化,如果我只需要在程序中使用一个方法,这个库是否会为其方法占用更多内存
如果我模棱两可,这就是我的意思。我正在创建一个自己的java实用程序库,它有许多实用程序方法。它可能会说100个方法,我将其称为LIBRARY X.现在我正在创建一个新程序PROGRAM Y.程序Y只使用了库中的100个方法中的1个方法,如果我只需要1,将编程Y加载所有100个方法。如果不需要,我怎么能避免加载整个库,或者java只加载程序调用的方法。
答案 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部分的位置,因为它们是静态的,不会为类的每个实例再次创建它们,因此如果您创建了许多实例,可以节省内存类。