Linux编程点击右侧关注,免费入门到精通!

黑客技术点击右侧关注,了解黑客的世界!

作者丨队长给我球。

https://www.cnblogs.com/JJJ1990/p/9111199.html

这几天遇到了一个问题,不幸开发的一个cs架构的工具,客户端开启后,内存一直在缓慢增长最终导致进程卡死,花了4天时间,终于爬出来了。。。

客户端通过timer定时器每30秒查询一次数据库以及一些业务逻辑操作,然后刷新界面的表格数据。

但是每次调用方法后,都会导致内存的增长,然后我将方法内部的变量在使用完之后手动设置为null 而且最后调用了gc 但是都没有什么效果,

最终还是会导致内存溢出,进程卡死。(估计是释放的速度,赶不上增长的速度。。。)

之后对定时部分的代码逐段进行了排查,最后发现是由于 我之前在对tableview进行实时刷新时导致的

代码如下:

 1 if (tableKeywordCompetePrice.getItems().get(tableKeywordCompetePrice.getItems().size() - 1).getKeyword() == null)2 3 {4     tableKeywordCompetePrice.getItems().remove(tableKeywordCompetePrice.getItems().size() - 1);5    }6    else7 {8     tableKeywordCompetePrice.getItems().add(new KeywordCompetePriceInfo());9     tableKeywordCompetePrice.getItems().get(tableKeywordCompetePrice.getItems().size() - 1).getCheckBox().setVisible(false);10    }

其中  tableKeywordCompetePrice   就是 一个  tableview 对象。

因为当 list 中元素属性变化时候, table 不能实时刷新。(因为此时修改事件并不受监听,list 不认为自己有变化,随之 table 也就不会刷新),所以我就采用了直接改变list大小来进行刷新。

tableview实时刷新有2种方式:

第一种是我上面采用的方式直接修改list的大小,简单粗暴。(但是没想到给自己挖了一个大坑。。。。0.0)

第二种就是 与 JavaFx UI 层进行交互的类属性,应当定义为对应的 xxxProperty 包装类 (如 StringProperty , IntegerProperty 等 )。

然后,在对 table cellValueFactory 定义时,就可以直接返回 xxxProperty 对象 (因为 StringProperty 本身就是 ObservableValue 的子类) ,这个麻烦的一点就是要挨个对需要监听的字段都增加这段代码。

例如:

 1 private final StringProperty device = new SimpleStringProperty();2 3 public StringProperty deviceProperty() {4 return device;5 }6 // 原有的 set 方法,并不受字段类型变化而改变,仍然返回同样的类型,只是方法体需要修改一下7 public void setDevice(String status) {8 this.device.set(status);9 }10 11 // 原有的 get 方法,并不受字段类型变化而改变,仍然返回同样的类型,只是方法体需要修改一下12 public String getDevice(){13 return device.get();14 }

展示实体类修改成上述代码后,就可以自动监听到device列对象属性的变化,从而进行实时刷新。

修改成这样后,内存基本很稳定。。。想哭。。。

目前对于为什么修改list大小会导致内存一直增长还是没想~明~白。

希望还有人用javafx tableview组件的时候能看到我这篇文章,免得也掉进坑中~~~~0.0。

【无门槛免费领】

535G超强程序员编程

0基础从入门到精通自学视频教程!

 

  

  

  

   

万水千山总是情,点个 “在看” 行不行

pyqt tableview大数据自动退出_JAVAFX之tableview界面实时刷新导致的内存溢出(自己挖的坑,爬着也要出来啊0.0)...相关推荐

  1. php 导出大数据量excel 解决方法 秒出 并不会出现PHPExcel内存溢出问题

    最近公司需要每天生成亚马逊广告调价报告报表 并且文件格式必须为excel 数据量超过10w+ 使用PHPExcel组件 加上生成器yield 并且设置单元格对象缓存 还是会导致内存爆掉 最后使用了PH ...

  2. 大数据基础学习二:在VMware虚拟机上安装Ubuntu完整步骤及需要注意的问题(以VMware Workstation 15.1.0 Pro和Ubuntu18.04.3优麒麟版为例)

    大数据基础学习二:在VMware虚拟机上安装Ubuntu完整步骤及需要注意的问题 (以VMware Workstation 15.1.0 Pro for Windows和Ubuntu18.04.3优麒 ...

  3. 利用大数据风控教你全栈式实时反欺诈

    "很久没有碰到这么大的漏洞了,你们继续,我睡了." 2019年1月20日凌晨1点半,在某"羊毛党"聚集的电报(Telegram,一款社交APP)群里,一位圈内& ...

  4. 如何基于大数据及AI平台实现业务系统实时化?

    简介: 后疫情时代的新社会模式及经济形态必将催生出新的商业模式,在线业务及相关应用场景的流量呈现井喷式发展,常规的离线系统及离线机器学习平台已无法满足业务发展要求. 作者:高旸(吾与),阿里巴巴高级技 ...

  5. 运营商精准大数据获客 网站APP访客实时截流

    企业想要获得精准客户线索的问题主要表现为两个方面,一是目标人群不够精准;二是轻视用户画像.因此,精准获客成败的前提是,是否有足够精确的"用户画像"来做支撑.因此企业解决精准获客这两 ...

  6. 大数据druid查询不支持分页_Druid实时大数据分析查询(六)

    Druid的数据查询过程以及查询语法 Druid提供了HTTP REST风格的查询接口.用户对数据的查询通过HTTP请求发送到查询节点(Broker Node),然后查询节点转发至历史节点(Histo ...

  7. 大数据级新闻去重实现 - 1.在线实时方案

    最近针对爬虫爬下来的新闻进行去重.这个去重要考虑很多方面: 不同网站发布的要点新闻,基本上是有通稿的,内容大同小异,基本一致,有些细节不同,需要去掉重复的,保留质量最好的. 去重对比的时间跨度是多大呢 ...

  8. 文件太大导致jvm内存溢出,针对业务实现简易的大文件(txt)拆分执行功能

    在日常完成业务过程中,出现了要在内存中操作很大的txt的需求,文件每行作为一条数据,但是由于数据量很大,不能一次性拉入内存中操作,但是又需要使用hashmap进行去重,于是借鉴hashmap的源码,编 ...

  9. layui如何实现添加数据时关闭页面层,并实时刷新表格数据?

    可能看到标题的你没有明白我到底想表达啥?(我起名字时删改多遍,这是最终定下来的),不过,为了让大家看的明白,我专门去做了个演示视频: 演示案例使用的技术:ssh框架+layui表格,即简单的对单表数据 ...

最新文章

  1. mysql 开发进阶篇系列 10 锁问题 (使用“索引或间隙锁”的锁冲突)
  2. linux 删除20日前数据,Linux 维护常用命令
  3. 统计学习方法——CART, Bagging, Random Forest, Boosting
  4. selenium + python自动化测试unittest框架学习(二)
  5. 数字证书——密码学笔记(六)
  6. k8s修改kube-apiserver的service-node-port-range端口范围
  7. dede 删除文章的同时自动删除生成的html文件夹,删除织梦自带编辑器自动加DIV的方法...
  8. 前端-----数据类型和运算符
  9. python爬虫文件格式_Python网络爬虫数据格式学习(转换headers、表单和urlencode数据为字典格式)...
  10. python监控某个程序_写一个python的服务监控程序
  11. MAYA中average normal
  12. shiro-cas------本地配置cas为HTTPS登录
  13. MyEclipse插件不能安装原因
  14. 廖雪峰python教程官网-廖雪峰老师官方爬虫教程,13个案例带你全面入门
  15. class accuracy、 instance accuracy、overall accuracy和average accuracy的区别
  16. 色彩缤纷的python(改变字体颜色及样式)不是我写的
  17. 脱壳手把手入门(详细)——aspack压缩壳
  18. 如何用计算机制作动态图,电脑怎么制作gif动态图
  19. vue 验证公民身份证号 并 自动 获取 性别、年龄、生日
  20. 如何解决弹出 C:\WINDOWS\system32\Macromed\Flash\Flash32_11_2_202_228.ocx 问题。

热门文章

  1. 日期处理——日期差值
  2. 生产电池要什么计算机技术,锂离子电池生产的几个关键工序讲解
  3. 认知空间是什么意思_Number是“数”,one是“一”,那么number one什么意思?
  4. 下载丨6月数据库技术通讯:不规范SQL引发大量TX锁
  5. 升级过log4j,却还没搞懂log4j漏洞的本质?
  6. 视镜:华为云媒体质量管理最新实践
  7. 13个VSCode使用技巧,开启高效的开发模式
  8. 数据库性能调优之始: analyze统计信息
  9. 带你了解Python炫酷的颜色输出与进度条打印
  10. 一统江湖的大前端(7)React.js-从开发者到工程师