在 Tomcat 中重新部署应用程序时出现内存泄漏

2023-11-25

当我在 tomcat 中重新部署应用程序时,出现以下问题:

 The web application [] created a ThreadLocal with key of type
 [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@10d16b])
 and a value of type [com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty]
(value [com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty@1a183d2]) but 
 failed to remove it when the web application was stopped. 
 This is very likely to create a memory leak.

另外,我在我的应用程序中使用 ehcache。这似乎也会导致以下异常。

     SEVERE: The web application [] created a ThreadLocal with key of type [null] 
     (value [com.sun.xml.bind.v2.ClassFactory$1@24cdc7]) and a value of type [java
     .util.WeakHashMap... 

ehcache 似乎创建了一个弱哈希映射,我得到的消息是这很可能会造成内存泄漏。

我在网上搜索了一下,发现了这个http://jira.pentaho.com/browse/PRD-3616但我无权访问服务器。

请告诉我这些警告是否有任何功能影响或者可以忽略吗?我在 tomcat 管理器中使用了“查找内存泄漏”选项,它显示“未发现内存泄漏”


当您重新部署应用程序时,Tomcat 会创建一个新的类加载器。旧的类加载器必须进行垃圾收集,否则会出现永久内存泄漏。

Tomcat 无法检查垃圾收集是否有效,但它知道几个常见的故障点。如果 webapp 类加载器设置了ThreadLocal对于其类由 webapp 类加载器本身加载的实例,servlet 线程保存对该实例的引用。这意味着类加载器不会被垃圾收集。

Tomcat 进行了许多此类检测,请参阅此处了解更多信息。清理线程局部变量很困难,你必须调用remove() on the ThreadLocal在从中访问的每个线程中。实际上,只有在开发过程中多次重新部署 Web 应用程序时,这一点才重要。在生产中,您可能不会重新部署,因此可以忽略这一点。

要真正找出哪些实例定义了线程局部变量,您必须使用分析器。例如堆遍历器JProfiler(免责声明:我的公司开发了 JProfiler)将帮助您找到那些线程局部变量。选择报告的值类(com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty 或 com.sun.xml.bind.v2.ClassFactory)并显示累积的传入引用。其中之一将是java.lang.ThreadLocal$ThreadLocalMap$Entry。选择该传入引用类型的引用对象并切换到分配视图。您将看到实例已分配到的位置。有了这些信息,您就可以决定是否可以采取行动。

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Tomcat 中重新部署应用程序时出现内存泄漏 的相关文章

  • JavaMail Gmail 问题。 “准备启动 TLS”然后失败

    mailServerProperties System getProperties mailServerProperties put mail smtp port 587 mailServerProperties put mail smtp
  • 在Windows上安装Java 11 OpenJDK(系统路径问题)

    Java 11 最近发布了 众所周知 这个版本没有安装文件 当然 要在没有安装程序的情况下安装 Java 我将系统设置 PATH 和 JAVA HOME 设置为解压缩 Java 11 的文件夹的地址 根据对类似问题的已接受回复建议 唯一的事
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • 如何在 Java 中禁用 System.out 以提高速度

    我正在用 Java 编写一个模拟重力的程序 其中有一堆日志语句 到 System out 我的程序运行速度非常慢 我认为日志记录可能是部分原因 有什么方法可以禁用 System out 以便我的程序在打印时不会变慢 或者我是否必须手动检查并
  • HDFS:使用 Java / Scala API 移动多个文件

    我需要使用 Java Scala 程序移动 HDFS 中对应于给定正则表达式的多个文件 例如 我必须移动所有名称为 xml从文件夹a到文件夹b 使用 shell 命令我可以使用以下命令 bin hdfs dfs mv a xml b 我可以
  • 如何为 Gson 编写自定义 JSON 反序列化器?

    我有一个 Java 类 用户 public class User int id String name Timestamp updateDate 我收到一个包含来自 Web 服务的用户对象的 JSON 列表 id 1 name Jonas
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 无法理解 Java 地图条目集

    我正在看一个 java 刽子手游戏 https github com leleah EvilHangman blob master EvilHangman java https github com leleah EvilHangman b
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • org.jdesktop.application 包不存在

    几天以来我一直在构建一个 Java 桌面应用程序 一切都很顺利 但是今天 当我打开Netbeans并编译文件时 出现以下编译错误 Compiling 9 source files to C Documents and Settings Ad
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • Windows 上的 Nifi 命令

    在我当前的项目中 我一直在Windows操作系统上使用apache nifi 我已经提取了nifi 0 7 0 bin zip文件输入C 现在 当我跑步时 bin run nifi bat as 管理员我在命令行上看到以下消息 但无法运行
  • Java - 不要用 bufferedwriter 覆盖

    我有一个程序可以将人员添加到数组列表中 我想做的是将这些人也添加到文本文件中 但程序会覆盖第一行 因此这些人会被删除 如何告诉编译器在下一个空闲行写入 import java io import java util import javax
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • 如果启用全页缓存,企业版控制器事件不会触发

    因此 在我们最近的一次发布中 我们观察了很多事件 例如controller action predispatch 网站上线后 我们开始注意到我们的观察员从未被要求进行这些操作 经过一番调查后 我们的一位开发人员在 Mage Core Mod
  • PHP 中的推送通知

    在尝试执行 php 脚本以向我的 iphone 发送推送通知后 我收到此错误 我已经尝试了一切 但没有任何效果 我相信这意味着我的ck pem是错误的 但我不确定是 key pem 还是 cert pem 错误 请帮忙 Script Thi
  • stl分配器、其他类型的复制构造函数、重新绑定

    STL 分配器需要以下构造函数形式 20 1 5 X a b 的要求是Y a b 在标准实现中 这意味着并且实现为 template
  • 遮蔽 Maven 中的依赖关系

    我有两个通过 Maven 导入的依赖项 它们都导入一个公共库 但版本不同 但版本彼此不兼容 本质上是描述的问题在这篇文章中 但不幸的是 对我来说 解决方案并不像博客文章描述的那么简单 因为没有通用版本的包Z这适用于两个依赖项 跳过导致这一点
  • Android 中如何统计通知数量并显示单个图标?

    我有多个 Android 通知 但是当我从网络服务器发送消息时 Android 设备会在状态栏上创建一个新的通知图标 我想统计未读通知的数量 显示在statusbar具有单个图标 并且当阅读通知时 该通知必须更改未读通知计数的数量 我该怎么
  • 信号量和并发编程

    对于家庭作业 我需要编写以下场景 这将通过使用 BACI 的信号量来完成 即 C 有 2 个男女通用卫生间 每个可容纳 4 人 由于它是男女皆宜的 所以只有同性别的人可以同时进入卫生间 先进先出并不重要 我脑子里有一个基本的 算法 可以处理
  • 数据库的 ID 最佳实践 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我想知道构建和存储 ID 的最佳实践是什么 几年前 一位教授以社会安全号码为例 向我讲述了构造不良的身份识别系统的危险 特别是 由于 SSN 没有任何错误检测功能 无法区分 9 位数字符串
  • 如何使用 xcode5 在 mac 应用程序中对捆绑的可执行文件进行代码签名

    我有一个在 xCode 5 中创建的应用程序 其中包含捆绑的可执行文件 我正在尝试将应用程序提交到 Mac 应用程序商店 但是当我提交它时 它失败并显示以下消息 未启用应用程序沙箱 以下可执行文件必须包含 com apple securit
  • 使用回发数据抓取页面 javascript Python Scrapy

    我正在通过 Scrapy 使用 ASP NET 编程爬行一些目录 要爬行的页面编码如下 javascript doPostBack ctl00 MainContent List Page X 其中 X 是 1 到 180 之间的整数 Mai
  • 如何更改 IE 中输入字段中文本光标的颜色?

    据我所知 在 Firefox 和 Chrome 中 输入字段中文本光标的颜色会更改为colorCSS 属性 但在 IE 中却没有任何效果 有没有办法在IE中实现这种效果呢 IE 输入中文本光标的颜色始终与背景颜色相反 所以你不能在IE上 这
  • 具有相互关联的三个表的多对多 (SqlAlchemy)

    我有三个表 用户 设备和角色 我已经创建了一个像这样的用户和设备之间的多对多关系 Many to Many relation between User and Devices userDevices db Table user device
  • 返回由 USING 创建的对象

    我正在使用中创建一个对象 下面的 obj 并将该对象作为函数返回的一部分返回 这会导致任何问题 例如在我尝试在另一个函数中使用返回值之前对象将被处理吗 using MyObject obj new MyObject return obj 这
  • 在 MVVM 世界中更改 CollectionViewSource 源

    Edited 我创建了一个新的 VS2010 WPF 应用程序 仅包含 3 个文件 MainWindow xaml MainWindow xaml cs 和 MainWindowViewModel cs 下面列出 如果有人觉得真的很有帮助
  • 错误:致命:不是 git 存储库(或任何父目录):.git

    当我尝试将图像放入项目的 Resources 文件夹中时 我收到以下消息 致命 不是 git 存储库 或任何父目录 git 我该如何修复它 有同样的问题 我复制了一个项目然后尝试删除文件 如果您希望能够编辑项目 请输入 git initfo
  • 在调用 Objective-C 对象的实例方法时,是否可以释放该对象?

    请考虑以下情况 Objective C 类的实例由一个强引用和一个弱引用 在 ARC 下 引用 在线程 X 上 通过弱引用在实例上调用方法 在线程 Y 上 强引用被破坏 因此不再有对该实例的强引用 并且应该释放该实例 这种情况是否可能 因为
  • Inno Setup:如何查看 Inno Setup 预处理器的输出(翻译)?

    我有一个带有预处理器指令的 Inno Setup 脚本 defines ifs etc 我想在我的脚本上运行 Inno Setup 预处理器并查看预处理器的输出 Inno Setup speak 中的翻译 也就是说 我想查看预处理器的结果
  • Spring Security OAuth2 - @EnableOauth2Sso 但也接受令牌作为身份验证

    我有一个应用程序 EnableOAuth2Sso on the WebSecurityConfigurerAdapter 添加后 EnableOAuth2Sso该应用程序将我重定向到授权服务器 并允许在该授权服务器登录后进行访问 我也想提供
  • 在Python中获取括号内的字符串

    我有一个示例字符串
  • 我应该测试私有方法还是只测试公共方法? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我读过了这个帖子关于如何测试私有方法 我通常不测试它们 因为我一直认为仅测试从对象外部调用的公共方法会更快 你测试私有方法吗 我应该总是测试它们吗 我不对私有方法进行单元测试 私有方法是应
  • 在 Tomcat 中重新部署应用程序时出现内存泄漏

    当我在 tomcat 中重新部署应用程序时 出现以下问题 The web application created a ThreadLocal with key of type java lang ThreadLocal value java