如何在关闭阶段后清除 Javafx Webview 内存使用情况

2024-04-23

我尝试在JavaFX中使用webview制作UI,但是有一个问题,当使用popup打开大图像时,内存使用量非常大,并且当popup关闭时,内存使用量不会下降,我明白了通过 Windows 中的任务管理器查看内存使用情况,

当使用webview打开大小约为8MB的图像时,内存使用达到300MB,我不明白为什么这么大,

我试过了

stage.setOnCloseRequest(new EventHandler<WindowEvent>() {

        @Override
        public void handle(WindowEvent event) { 
            webengine.load(null);   

        }
    });

但仍然不要释放内存


您可能正在看到一个实例RT-33729 WebView 泄漏 WCImgDecoderImpl 实例 https://javafx-jira.kenai.com/browse/RT-33729,目前目标是针对 Java 8u20 进行修复。在 RT-33729 中,开发人员 (Leonid Popov) 写道:

Webkit 具有用于网页的资源缓存,包括图像。 即使资源不再使用,它​​也会继续保留未使用的(“死的”)资源。 不再引用,以防用户按“后退”以避免 加载已经加载的资源,但它们不会保留太多 堆空间。详情参见Webkit源码中的注释:

http://trac.webkit.org/browser/trunk/Source/WebCore/loader/cache/MemoryCache.h http://trac.webkit.org/browser/trunk/Source/WebCore/loader/cache/MemoryCache.h

WCImgDecoderImpl 的实例通过 JNI 引用 ImageSource 由 BitmapImage 引用 由 CachedImage 引用 存储在MemoryCache中。我通过修改缓存来测试它,以便它 完全清除了其缓存资源,并观察到所有 WCImgDecoderImpl 已经消失了。而 WCImgDecoderImpl 的实例 可以从WebKit本机代码访问,它并不是没有用。重点 是 WebKit 统治了 WCImgDecoderImpl 的生命周期 通过JNI。研究如何强制刷新此缓存 关于WebView的删除,仍在进行中。

从描述中谈论测试应用程序。当您删除一个 WebView 从场景中删除,它不会立即被删除(所以它 不释放任何资源)。相反,它有一个注册的处理器 在处理程序线程(类似于 AWT 使用的线程)处,应该 一定时间回调,导致原生资源被占用 WebEngine 发布。

另外,我建议在删除之前导航到“about:blank” 网页视图;它会立即释放一些资源。

但是,也许你看到的是完全不同的东西,我无法明确地告诉你,比如什么原因RT-35262 由于 WebView/Webkit 中的内存泄漏而导致 JVM 崩溃 https://javafx-jira.kenai.com/browse/RT-35262,也将针对 Java 8u20 进行解决或RT-34630 分配 JavaScript 回调时 WebView 内存泄漏 https://javafx-jira.kenai.com/browse/RT-34630,由于 Java 9 已解决。

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

如何在关闭阶段后清除 Javafx Webview 内存使用情况 的相关文章

  • JPA 中的复合键

    我想创建一个具有自动生成的主键的实体 而且还有一个由其他两个字段组成的唯一复合键 我如何在 JPA 中执行此操作 我想这样做是因为主键应该用作另一个表中的外键 并且使其复合并不好 在下面的代码片段中 我需要命令和模型是唯一的 pk当然是主键
  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • Java:无法从同一包中的不同类访问静态变量

    这很奇怪 因为我有一个可以访问 Frame dimension getWidth 的 Character 类 及其伙伴 getHeight 但是当我想在 Map 类中使用它时 Eclipse 强调了它并且无法给我反馈 运行该程序最终会出现
  • 通过SOCKS代理连接Kafka

    我有一个在 AWS 上运行的 Kafka 集群 我想用标准连接到集群卡夫卡控制台消费者从我的应用程序服务器 应用程序服务器可以通过 SOCKS 代理访问互联网 无需身份验证 如何告诉 Kafka 客户端通过代理进行连接 我尝试了很多事情 包
  • 不同类型的数组

    是否可以有一个包含两种不同类型数据的数组 我想要一个包含双精度型和字符串的数组 我尝试过 ArrayList
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • Kotlin 未解决的参考:CLI 上 gradle 的 println

    放一个printlnkotlin 函数返回之前的语句会崩溃 堆栈跟踪 thufir dur NetBeansProjects kotlin thufir dur NetBeansProjects kotlin gradle clean bu
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • org.apache.commons.net.io.CopyStreamException:复制时捕获 IOException

    我正在尝试使用以下方法中的代码将在我的服务器中创建的一些文件复制到 FTP 但奇怪的是我随机地低于错误 我无法弄清楚发生了什么 Exception org apache commons net io CopyStreamException
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp

随机推荐

  • 为什么这个上下文管理器与字典理解的行为不同?

    我有一个上下文装饰器 完成后会产生副作用 我注意到 如果我使用字典理解 就不会出现副作用 from contextlib import contextmanager import traceback import sys accumulat
  • 在 Woocommerce 产品标题中添加换行符

    假设我的产品标题是 棕色皮鞋 但根据我的列宽 标题如下所示 棕色皮革 Shoes 我知道可以进行角色替换 以便 在后端变成换行符 br 但我不知道怎么办 我希望它看起来像这样 棕色 皮鞋 我找到了这些参考资料 在商店页面上的产品标题上添加一
  • 如何为列表中的每个元素创建一个按钮并将其放在滚动区域中?

    我有一个列表 每次用户打开文件时都会获取一个元素 我需要创建一个带有文件名 列表中的元素 的按钮 每次将该文件附加到列表中时 并将该按钮放入滚动区域 问题是我总是只有一个按钮 只是更改了名称 filenames def addfiles f
  • SASS/SCSS 变量不适用于 CSS 变量赋值

    我有以下 SCSS 代码 mixin foo bar 42 xyzzy bar bar include foo 我希望得到 CSS 变量 xyzzy set to 42 on all bar元素 相反 我得到 CSS 说明bar xyzzy
  • 根据背景将前景色设置为黑色或白色

    比如计算RGB分量的平均值 然后决定使用黑色还是白色 我是否必须在第一步将 RGB 转换为 HSV 因为 RGB 并不总是人眼看到的 我正在使用 C 恰巧我不久前的一个项目需要这个功能 private int PerceivedBright
  • 如何正确访问后台线程中创建的查询结果?

    我想在后台线程中执行数据库查询 OmniThread 库将帮助我处理所有线程问题 但到目前为止我不明白一件事 每个线程都需要一个单独的数据库连接 因此 后台线程创建数据库连接 创建查询 然后执行它 现在我可以使用后台线程的查询对象访问查询结
  • 停止并重新启动 HttpListener?

    我正在开发一个应用程序 它有一个HttpListener 我的目标是让用户根据自己的选择关闭和打开监听器 我将侦听器放入一个新线程中 但在中止该线程时遇到问题 我在某处读到 如果您尝试中止非托管上下文中的线程 那么一旦它重新进入托管上下文T
  • 尝试从客户端发送数据,但 req.session 无法正常工作

    我正在尝试执行发布请求 当我使用邮递员执行此操作时非常成功 但我正在尝试从客户端发送它 我想发布购物车 但结果是我不断发布数量为 1 的商品 无论我发布该请求多少次 解决此问题并以正常方式发布请求的最佳解决方案是什么 我正在使用会话 也许这
  • Mutation Observer不检测通过innerHTML、appendChild添加的节点

    当我们尝试使用appendChild或innerHTML在DOM中添加嵌套节点时 嵌套节点不会出现在突变的addedNodes中 初始 HTML 设置 div div 这是我的突变观察者代码 var observer new Mutatio
  • 回收器查看致命异常:java.lang.ArrayIndexOutOfBoundsException

    我通过 crashlytics 得到了这个堆栈跟踪 我不知道问题出在哪里 有没有 StaggeredGridLayoutManager 的替代方案可以用来获取类似列表视图的布局 Fatal Exception java lang Array
  • 仅正样本和未标记数据集的二元半监督分类

    我的数据由评论组成 保存在文件中 其中很少被标记为正面 我想使用半监督和PU http www cs uic edu liub publications ICDM 03 pdf分类将这些评论分为正面和负面类别 我想知道 python sci
  • Angular 2 可用的 yeoman 生成器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有官方的 Angular 生成器 许多用户为 Angular 1 提供了生成器 但我还没有找到 Angu
  • 简单游戏服务器的代码示例

    我想为游戏中心构建一款 iPhone 游戏 目前正在研究其中的服务器部分 我通过示例学习得最好 但我很难找到任何简单游戏服务器的示例来演示 数据如何格式化并发送到服务器以及如何接收 如何验证正在发送 接收的数据以避免玩家作弊等 游戏服务器代
  • 将 Google People API 与 Cloud Functions for Firebase 结合使用

    我正在尝试使用 Firebase 的 Cloud Functions 从 Google People API 获取联系人列表 但我只得到一个空对象作为响应 有什么想法吗 云函数代码如下 var functions require fireb
  • 如何将现有的 AngularJS 2 Web 应用程序转换为 Cordova 应用程序?

    我有一个用 Angularjs 2 0 构建的 web 应用程序 我想将其转换为 android apk 并将其安装在 android 手机上并进行测试 我没有任何构建移动本机应用程序或将网络应用程序转换为本机应用程序的经验 我已经完成了如
  • 反转 PyQtGraph 中的 Y 轴

    我正在使用 Python 和 PyQt4 开发一个应用程序 该应用程序根据深度绘制不同的参数 绘图包是 PyQtGraph 因为它具有良好的动画速度特性 由于我正在根据深度进行绘图 因此我想反转 Y 轴 我发现我可以修改PyQtGraph文
  • WooCommerce - 获取用户在一段时间内完成的状态订单

    我需要通过 Woocommerce 中的用户 ID 获取用户上个月完成的购买 用户有级别 金级 银级 金卡会员每月可购买4件商品 银卡会员每月可以购买 1 件商品 在将商品添加到购物车之前 我需要检查这一点 我不想仅使用插件来实现此功能 顺
  • .htaccess 需要 WWW 域,但允许子域(如果存在且没有硬编码)

    我试图弄清楚如何设置一组 htaccess 规则 如果最初未指定 则强制在域前面出现 www 但同时 它不会如果存在子域 则有任何影响 所有这一切都无需对任何域名进行硬编码 以便脚本可以在不同的服务器和配置之间移植 EDIT 很抱歉我没能首
  • 错误页面注册器和全局异常处理

    我正在创建一个 Spring Boot Web 应用程序 但我很困惑为什么人们在存在更整洁 更明确的错误页面注册器时使用全局异常处理程序 ControllerAdvice 请有人解释更多 是否可以从全局异常处理程序类 用 Controlle
  • 如何在关闭阶段后清除 Javafx Webview 内存使用情况

    我尝试在JavaFX中使用webview制作UI 但是有一个问题 当使用popup打开大图像时 内存使用量非常大 并且当popup关闭时 内存使用量不会下降 我明白了通过 Windows 中的任务管理器查看内存使用情况 当使用webview