Java:`static`方法
当我调用静态方法时,比如:
Something.action();
由于没有创建实例,静态方法的类将在内存中保留多长时间
如果我调用相同的方法,由于不存在实例,是否会为每次调用重新加载该类
调用时是否只加载单个静态方法,或者即使只使用一个静态方法,类的所有方法和静态方法是否都加载到内存中
你可以在下面搜索框中键入要查询的问题!
当我调用静态方法时,比如:
Something.action();
由于没有创建实例,静态方法的类将在内存中保留多长时间
如果我调用相同的方法,由于不存在实例,是否会为每次调用重新加载该类
调用时是否只加载单个静态方法,或者即使只使用一个静态方法,类的所有方法和静态方法是否都加载到内存中
# 1 楼答案
调用方类加载时,应该加载Something类。正如克罗森沃尔德所说,它会一直留在那里,直到虚拟机退出
# 2 楼答案
除非您配置了permgenspace的垃圾收集,否则该类将一直保留在内存中,直到vm退出。整个类加载了所有静态方法
# 3 楼答案
在某些配置中,甚至会在调用之前加载该类。我们使用了BES(Borland Enterprise Server),我们的Solaris生产服务器出现了问题,所有引用的类都是在应用程序启动时递归加载的。这意味着,当我们的应用程序的主类被加载时,应用程序服务器加载了该类的导入部分中引用的所有类。。。递归地
作为补充说明,除非您运行在一个非常内存受限的环境中,或者如果您正在加载大量不必要的类,否则您不应该太在意在内存中加载的类的内存使用情况
# 4 楼答案
该类一直保留在内存中,直到加载该类的类加载器保留在内存中。因此,如果该类是从系统类加载器加载的,就我所知,该类永远不会被卸载
如果你想卸载一个类,你需要: