java类驻留在内存中的时间

Muh*_*edy 2 java classloader

我正在考虑一个类驻留在内存中的多少,以防内存中的其他对象没有访问它?

例如,假设我有一些这样的类:

public class OrderNumber {
 private static long counter = 0;

 public static long getOrderNumber(){
          if (counter >= 100) {
            return counter = 1;
          }
          return ++counter;
 }
}
Run Code Online (Sandbox Code Playgroud)

我从另一个类调用它的静态方法:

long number = OrderNumber.getOrderNumber(); 
Run Code Online (Sandbox Code Playgroud)

每次我调用它,它都会返回一个增量数字,1,2,3,4 ......

所以,我的问题是这个方法返回初始值的概率是多少,它应该返回序列值?

dav*_*veb 10

现在,答案是永远的.类定义被放入永久代,并保持在那里直到程序终止.

注意,这是JVM上的动态语言的问题,如JRuby,它可以动态创建类,因为这些类浪费了空间.我相信可以解决这个问题的工作有所改变 - 例如G1收藏家