gpt4 book ai didi

memory-management - Glassfish 上的内存管理

转载 作者:太空宇宙 更新时间:2023-11-04 03:58:59 28 4
gpt4 key购买 nike

我的 Glassfish 服务器上运行着几个由 @TimerService 实例实现的后台任务。这些服务的目标是从文件中提取数据并将该数据插入数据库。

我最初尝试在 JPA 中执行此操作,但系统很容易就停滞了,我现在已将该过程转换为 JDBC,它的响应速度要快得多。然而,在此过程中仍然存在巨大的内存泄漏,我无法查明。

每个文件都以管理其自身事务的方法提取(1 个文件 = 1 个事务)。我认为一旦这个方法完成了所有变量的松散范围并被GC,但事实并非如此。很短的时间后,我遇到了 OutOfMemoryException

我想知道 Glassfish 是否、如何以及为何保留对我的变量(它们是非常重的对象)的引用。我可以应用哪些设置或方法来最大限度地减少这些内存泄漏?

作为引用,我使用的是 Glassfish 库存设置,并进行了一些修改:

-XX:+CMSPermGenSweepingEnabled 
-XX:+CMSClassUnloadingEnabled
-XX:MaxPermSize=256m
–XmX1024m

最佳答案

您可能正在处理类加载器泄漏。当您解码时,JAXB 可以执行此操作。为了确定这一点,您应该使用内存分析器。我强烈建议使用 Eclipse Memory Analyzer Tool 。只需遵循一些教程,您应该就能弄清楚。

关于memory-management - Glassfish 上的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23728518/

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