ClassPool
ClassPool对象是一个CtClass对象的容器。一个CtClass对象被构建后,它被记录在ClassPool中。这是因为当编译的原文件关联到CtClass表示的类, 编译器要访问CtClass对象。
例如,假定一个新方法getter()要加入到CtClass对象表示的的Point类。程序试图编译Point中的方法getter()的源代码,用编译过的代码做为方法内容,将它加到另一个类Line中。如果CtClass对象表示的Point丢失了,编译器将不能编译getter()方法。注册初始的类不包含getter()方法。因此,为了正确的编译一个方法,ClassPool必须拥有程序运行时所有的CtClass实例。
避免内存溢出
ClassPool的特点决定了当 CtClass对象数量很多时,它所占的内存会非常大。为了避免这种情况发生,你可以明确的移除一个ClassPool中的不需要的CtClass对象。如果用CtClass的detach()方法,CtClass对象将从ClassPool中移除。例如:
CtClass cc = ... ;
cc.writeFile();
cc.detach();
执行deatach()后,将不能执行CtClass对象的任何方法。但是,可以执行ClassPool的get()方法得到表示同一个类的CtClass实例。执行get()后,ClassPool再次读取类文件,重新建立CtClass对象。
[url]http://www.cnblogs.com/hucn/p/3636912.html[/url]
[url]http://blog.youkuaiyun.com/mousebaby808/article/details/37696371[/url]
javassist学习
[url]http://yonglin4605.iteye.com/blog/1396494[/url]
[url]http://blog.youkuaiyun.com/sadfishsc/article/details/9999169[/url]
Javassist注解(Annotation)的使用:CXF WebService动态生成
[url]http://www.cnblogs.com/coshaho/p/5105545.html[/url]
ClassPool对象是一个CtClass对象的容器。一个CtClass对象被构建后,它被记录在ClassPool中。这是因为当编译的原文件关联到CtClass表示的类, 编译器要访问CtClass对象。
例如,假定一个新方法getter()要加入到CtClass对象表示的的Point类。程序试图编译Point中的方法getter()的源代码,用编译过的代码做为方法内容,将它加到另一个类Line中。如果CtClass对象表示的Point丢失了,编译器将不能编译getter()方法。注册初始的类不包含getter()方法。因此,为了正确的编译一个方法,ClassPool必须拥有程序运行时所有的CtClass实例。
避免内存溢出
ClassPool的特点决定了当 CtClass对象数量很多时,它所占的内存会非常大。为了避免这种情况发生,你可以明确的移除一个ClassPool中的不需要的CtClass对象。如果用CtClass的detach()方法,CtClass对象将从ClassPool中移除。例如:
CtClass cc = ... ;
cc.writeFile();
cc.detach();
执行deatach()后,将不能执行CtClass对象的任何方法。但是,可以执行ClassPool的get()方法得到表示同一个类的CtClass实例。执行get()后,ClassPool再次读取类文件,重新建立CtClass对象。
[url]http://www.cnblogs.com/hucn/p/3636912.html[/url]
[url]http://blog.youkuaiyun.com/mousebaby808/article/details/37696371[/url]
javassist学习
[url]http://yonglin4605.iteye.com/blog/1396494[/url]
[url]http://blog.youkuaiyun.com/sadfishsc/article/details/9999169[/url]
Javassist注解(Annotation)的使用:CXF WebService动态生成
[url]http://www.cnblogs.com/coshaho/p/5105545.html[/url]
本文详细介绍了ClassPool和CtClass的概念及其在Javassist中的应用。ClassPool作为CtClass对象的容器,用于存储和管理这些对象,确保在程序运行过程中能够正确地编译和操作类。此外,还探讨了如何通过detach方法有效管理内存,避免内存溢出的问题。
6524

被折叠的 条评论
为什么被折叠?



