gpt4 book ai didi

java - WebSphere Portal 中与门户 URI 相关的内存泄漏

转载 作者:行者123 更新时间:2023-11-30 09:56:53 24 4
gpt4 key购买 nike

我有一个应用程序以相当高的速度泄漏出 Java 堆(400 个用户在 2 小时后留下 25% 的空闲空间......在注销后所有内存都恢复了)并且我们已经确定导致内存泄漏的项目作为放置的字符串在似乎由 Portal 本身生成的 session 中。这些值是经过编码的 Portal URI(非常长的结束编码字符串……通常大小约为 19kb),键似乎是七 (7) 个随机生成的字符,前缀为 RES#(例如,RES#NhhEY37).

我们已经使用 session 跟踪逐步完成应用程序并关闭堆转储,这导致确定在几乎每个页面上都创建并添加了这些对象之一......事实上,它似乎是在每个提交数据的页面(大多数页面)。因此,它要么与一般页面 1:1,要么与表单 1:1。

有没有人遇到过类似的问题?我们正在与 IBM 开票,但也想询问这个社区。提前致谢!

最佳答案

它可以是 portlet 缓存吗?您可以激活 servlet 缓存并声明一个长的 portlet 过期时间。引自 techjournal :

Portlet 可以通过在它们的 portlet.xml 描述符 (see Portlet descriptor example) 中设置它们的到期时间来宣传它们被缓存在片段缓存中的能力

<!-Expiration value is in seconds, -1 = no time limit, 0 = deactivated-->
<expiration-cache>3600</expiration-cache> <!- 1 Hour cache -->

要使用片段缓存功能,需要在 WebSphere Application Server 管理控制台的 Web 容器部分激活 servlet 缓存(请参阅 Portlet 描述符示例)。 WebSphere Application Server 还提供了一个缓存监视器企业应用程序 (CacheMonitor.ear),这对于可视化片段缓存的内容非常有用。

更新

您是否有设置 EXPIRATION_CACHE 的 portlet?引用:

在运行时修改本地缓存对于标准的 portlet,portlet 窗口可以在运行时通过设置 RenderResponse 中的 EXPIRATION_CACHE 属性来修改过期时间,如下所示:

RenderResponse.setProperty(
PortletResponse.EXPIRATION_CACHE,
(new Integer(3000)).toString() );

请注意,这个值对我来说有点违反直觉,-1 表示永不过期,0 表示不缓存。

关于java - WebSphere Portal 中与门户 URI 相关的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2087154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com