Sur*_*ran 9 java reflection memory-management
我理解perm大小用于存储元数据,包括字节代码,静态东西等.
我的问题是如何使用反射影响烫发大小.我的意思是如果Program-A使用正常运行方式的方式而Program-B全部使用反射,那么两个程序的perm大小将如何比较?
当您执行将加载新类或内化字符串的代码时,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
在现实世界的应用程序中它将没有任何区别.