首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OSGi中的内存清理

OSGi中的内存清理
EN

Stack Overflow用户
提问于 2016-07-29 20:45:51
回答 1查看 942关注 0票数 0

我正在学习OSGi,因为它现在变得流行了几天。我使用linux作为我的操作系统,使用OpenJDK作为开发环境。我已经创建了几个包A、B、C。等在OSGi equinox框架中。

我使用以下命令运行OSGi框架:

代码语言:javascript
复制
java -jar osgi-3.10.0-v20140606-1445.jar -console

现在我安装并启动了A、B、C。OSGi控制台中的etc捆绑包。使用linux top命令,我观察到内存和CPU利用率,如下所示:

代码语言:javascript
复制
 PID   PPID USER     STAT   VSZ %VSZ %CPU COMMAND
 1972   422 root     S     368m  74%   3% java -jar osgi-3.10.0-v20140606-1445.jar -console

我观察到我的一个包,比如B,导致了高内存利用率。我从OSGi卸载了包B,并再次检查了内存使用情况。我发现了相同的结果,CPU使用率和内存使用率都没有变化。

我在没有包B的情况下重新启动了OSGi框架,然后我发现了以下统计信息

代码语言:javascript
复制
1972   422 root     S     214m  43%   0% java -jar osgi-3.10.0-v20140606-1445.jar -console

因此,在这之后,我开始了解到,在我重新启动OSGi框架之前,从OSGi卸载包B并不会更新内存或CPU使用率。

那么,有人能建议我,在OSGi中卸载包后如何清理内存?

EN

回答 1

Stack Overflow用户

发布于 2016-08-01 15:58:58

卸载捆绑包将阻止其他捆绑包连接到它(类加载器管理),但它不会从内存中卸载现有实例或停止这些类中的活动。要卸载一个实例,这是正常的Java垃圾收集过程;您需要确保应用程序中的任何其他对象都没有持有对该实例的引用,然后垃圾收集器将释放该实例使用的资源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38659258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档