【发布时间】:2014-05-28 16:28:41
【问题描述】:
我的项目有一组自定义注释,它们可以出现在部署在 OSGi 4.3 框架中的任何包中。我想在类路径中找到任何带有这些注释的类。我尝试对找到的每个类使用BundleWiring.listResources(...) 和Bundle.loadClass(...)。我用一小组包做了一些测试,它需要将近 200MB 的永久代 JVM 内存空间,因为所有类都已加载。
当程序意识到它们没有这些注释时,有没有办法释放加载的类 PermGen 内存空间?
有没有更好的方法在 OSGi 框架中查找带注释的类?
【问题讨论】:
-
你想用这些带注释的类做什么?
-
@Aritra 我基本上想找到它们,以使用这些类中的信息触发其他操作。类似的情况可能是基于 JAX-RS/JAXB 注释准备 Web 服务。无论如何,这是一个普遍的问题。
-
我一直在过滤要扫描的包,只从导入注释包的包中加载类。我正在使用
BundleWiring.getRequiredWires(null)并使用BundleWire.getCapability().getAttributes().get(BundleRevision.PACKAGE_NAMESPACE).equals(packageName)寻找我的包裹。它减少了很多内存消耗和加载类所花费的时间。这似乎不是更好的方法,但它大大简化了流程。