首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Permgen大小+性能影响

Permgen大小+性能影响
EN

Stack Overflow用户
提问于 2012-04-19 21:42:30
回答 3查看 7K关注 0票数 8

我们在tomcat6上运行了一个liferay门户,每个portlet都是一个包含的web应用程序,所以它包含了portlet本身所需要的所有库。我们目前有30+ portlets。这样做的结果是,我们部署的每个portlet都会增加tomcat的permgen。

我们现在有两条路可走。或者将每个portlet常用的一些库移动到tomcat共享库中。这将包括spring/hibernate/cxf/....减少我们的permgen大小或更容易的是增加permgen大小。

第二个选项允许我们将每个portlet保留为自包含的实体。

现在的问题是,增加permgen大小是否会对性能产生负面影响?我们目前的运行速度是512MB。我几乎没有找到关于这方面的信息。但发现一些帖子是人们正在讨论运行在1024MB的permgen大小没有问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-22 09:27:23

只要您的服务器上有足够的内存,我就无法想象会出什么问题。如果不这样做,那么Tomcat甚至不会启动,可能是因为它无法分配足够的内存。所以,如果它真的启动了,那你就没问题了。根据我的经验,1 1GB的PermGen是非常好的。

大型PermGen的缺点是留给您的系统内存较少,可以分配给堆(Xmx)。

另一方面,我建议您重新考虑将portlets视为自包含实体的好处。例如:

  • interoperability问题:如果允许所有portlets潜在地使用相同库的不同版本,则存在一些风险,即它们不会相互协作,也不会与门户本身协作,因为intended
  • performance: PermGen足迹只是一件事,但是在portlets中到处添加jars将需要额外的文件描述符;
  • 的更改自由度:如果您使用maven构建您的lib/ext,那么从portlet库切换到portlet的lib库只需要更改依赖范围(这对于portal库来说可能更烦人);就我记忆所及,Liferay SDK还可以很容易地与ant进行类似的切换,通过添加额外的ant任务来解决依赖关系,并根据需要从portlet的lib中删除它们
票数 3
EN

Stack Overflow用户

发布于 2012-04-22 09:50:33

PermGen内存可以通过完全收集进行垃圾收集,因此增加它可能会在发生完全收集时增加GC时间量。

不过,这些收集不应该进行得太频繁,而且通常情况下仍然需要不到一秒的时间来满GC 1 GC的永久内存-我只是从(我有点模糊的)内存中拉出这个数字,所以如果您真的担心GC时间,请自己进行一些计时测试(使用-verbose:gc并阅读日志,更多详细信息here)

票数 1
EN

Stack Overflow用户

发布于 2014-10-20 20:39:32

Permgen大小不在旧Gen之外-所以请不要混淆。同意第二点-我们可以尽可能地增加permsize -因为内存非常便宜,但这会引发一些关于我们如何管理代码的问题。为什么我们需要这么多的perm -Is JTa来消耗这么多--我们加载了多少类?应用程序正在打开多少个文件描述符(使用lsof命令检查)。我们应该尝试回答这些问题。

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

https://stackoverflow.com/questions/10229378

复制
相关文章

相似问题

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