在最近的项目里我负责的一个模块中,
有很多需要用到同一个算法或逻辑的地方,
所以按照习惯思路,写了一个util的类,
里面都是static的方法或者field
比如:
public static int add(int a, int b){
....
}虽然用的时候很舒服,
不过最近有闲功夫了,
就瞎琢磨起来。这些方法,或者说这个util类,
在什么时候会被系统回收掉呢?或者是想问这些方法或者这个util类,
会不会有和普通对象相同的“占用/消耗内存”的问题,
也就是说需不需要担心这个类在项目运行自始至终都会留在内存中,除非运行结束。
比如运行这个项目的j2ee的服务结束的时候。或者就根本不用操心这方面的事情呢?主要是我对java如何分配那些static的东西不是很清楚!
尤其是纯util类,
会不会只要虚拟机运行着,就都存在这些static的东西呢?问了一大堆,不知道说清楚没有!很久没来csdn了!顺便祝大家身体健康吧!good luck
有很多需要用到同一个算法或逻辑的地方,
所以按照习惯思路,写了一个util的类,
里面都是static的方法或者field
比如:
public static int add(int a, int b){
....
}虽然用的时候很舒服,
不过最近有闲功夫了,
就瞎琢磨起来。这些方法,或者说这个util类,
在什么时候会被系统回收掉呢?或者是想问这些方法或者这个util类,
会不会有和普通对象相同的“占用/消耗内存”的问题,
也就是说需不需要担心这个类在项目运行自始至终都会留在内存中,除非运行结束。
比如运行这个项目的j2ee的服务结束的时候。或者就根本不用操心这方面的事情呢?主要是我对java如何分配那些static的东西不是很清楚!
尤其是纯util类,
会不会只要虚拟机运行着,就都存在这些static的东西呢?问了一大堆,不知道说清楚没有!很久没来csdn了!顺便祝大家身体健康吧!good luck
static的缺点:不过他们修饰的方法、变量被没被使用,只要类加载就开辟了他们自己一片小天地。
综上所述:如果不是经常使用的方法或变量,那么就不应该用static。
也就是说只会在虚拟机结束的时候才会被释放?
那就是比如是tomcat的话,就是tomcat停止运行的时候才会释放static的资源吗?谢谢
它通常是像util那样可以供很多包使用的通用类。