反射如何影响Perm的大小?

Sur*_*ran 9 java reflection memory-management

我理解perm大小用于存储元数据,包括字节代码,静态东西等.

我的问题是如何使用反射影响烫发大小.我的意思是如果Program-A使用正常运行方式的方式而Program-B全部使用反射,那么两个程序的perm大小将如何比较

Tho*_*ung 7

当您执行将加载新类内化字符串的代码时,perm空间将增长.必须加载反射类,这是肯定的.我不确定反射API是否确实使用了内部化的字符串,但它不应该很难找到.

例如,对于该方法getDeclaredMethod(String name, Class<?>... parameterTypes),name参数将被内化.

这个片段很好地填满了烫发空间:

Random random = new Random();
while(true){
    try {
        X.class.getDeclaredMethod(toBinaryString(random.nextLong()));
    } catch (Exception e) {
    }
}
Run Code Online (Sandbox Code Playgroud)

alt text http://img4.imageshack.us/img4/9725/permgen.jpg

在现实世界的应用程序中它将没有任何区别.