机器跑了一晚上,发现有崩溃现象,由于页面内有动态绘图功能,我怀疑是绘图原因,但是今天上午有人提醒我才想到,是不是间隔调用时DWR产生了内存泄漏问题?

网上查了一下貌似大家都在讨论这个问题,之前我也挺老手说过DWR有内存问题,可是没有遇到过。原来DWR在间隔调用这种情况下会有问题!

按照大家的说法,修改engine.js配置文件来解决问题,目前我也修改了一下,修改方法如下:

dwr.engine._sendData = function(batch) {}

内有,这样几行代码:

// Get setup for XMLHttpRequest if possible

if (batch.rpcType == dwr.engine.XMLHttpRequest) {

if (window.XMLHttpRequest) {

batch.req = new XMLHttpRequest();

}

// IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used

else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) {

batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP);

}

}

看起来IE请求Ajax的对象每次都在创建

而根据网上的说法,IE在创建对象后,如果这个页面不关闭(包括不能最小化)时,其创建的对象是一直不销毁的。那么无限制的创建对象且不销毁,当然会内存泄漏

目前我改了一下,如下面代码:

var httprequest = null;

// Get setup for XMLHttpRequest if possible

if(null==httprequest){

// Get setup for XMLHttpRequest if possible

if (batch.rpcType == dwr.engine.XMLHttpRequest) {

if (window.XMLHttpRequest) {

httprequest = new XMLHttpRequest();

}

// IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used

else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) {

httprequest = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP);

}

}

}

就是说第一次创建,之后不再创建,相当于单例模式。

由于内存泄漏时长时间运行引起的,目前尚不知该方法是否能解决问题。但是从任务管理器上看,好像有所改善,我们还需要进一步测试。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java dwr 漏洞_Java DWR内存泄漏问题解决方案相关推荐

  1. java内存泄漏和内存溢出_Java和内存泄漏

    java内存泄漏和内存溢出 总览 术语"内存泄漏"在Java中的使用方式不同于在其他语言中使用的方式. 通用术语中的"内存泄漏"是什么意思,在Java中如何使用 ...

  2. 监视和检测Java应用程序中的内存泄漏

    因此,您的应用程序内存不足,您日夜不停地分析应用程序,以期捕获对象中的内存漏洞. 后续步骤将说明如何监视和检测您的内存泄漏,以确保您的应用程序安全. 1.怀疑内存泄漏 如果您怀疑有内存泄漏,可以使用一 ...

  3. Java应用程序中的内存泄漏和内存管理

    Java平台最突出的功能之一是其自动内存管理. 许多人错误地将此功能转换为Java中没有内存泄漏 . 但是,事实并非如此,我给人的印象是,现代Java框架和基于Java的平台,尤其是Android平台 ...

  4. java内部类内存泄漏,Android中常见的内存泄漏和解决方案

    什么是内存泄漏? 简单点说,就是指一个对象不再使用,本应该被回收,但由于某些原因导致对象无法回收,仍然占用着内存,这就是内存泄漏. 为什么会产生内存泄漏,内存泄漏会导致什么问题? 相比C++需要手动去 ...

  5. 开发过程中程序员非常烦恼的问题,3种内存泄漏的解决方案

    程序员非常蛋疼问题,3种内存泄漏的解决方案 1. 内存池的实现以及原理 2. 为内存加上hook,精准内存定位泄露 3. gc的实现方案 视频讲解如下,点击观看: 开发过程中程序员非常烦恼的问题,3种 ...

  6. quartz java 线程 不释放_java Quartz 内存泄漏

    我用定时器启动应用的时候发现内存泄漏,具体报错如下: 十月 30, 2015 2:30:12 下午 org.apache.catalina.startup.HostConfig undeploy 信息 ...

  7. Java开发者必须知道的内存泄漏问题

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 简介 Java的核心优势之一是在内置垃圾收集器(简 ...

  8. 程序如何调堆内存_Java的内存泄漏

    问题的提出 Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存.因此,很多程序员认为Java不存在内存泄漏问题 ...

  9. 【Java面试题】之内存泄漏

    本文转载自:http://blog.csdn.net/anxpp/article/details/51325838 Java的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自 ...

最新文章

  1. linux和windows双系统引导,windows和linux双系统引导问题
  2. 淘宝Fourinone分布式计算框架性能、压力、容灾测试报告
  3. iOS 10 SceneKit 新特性 – SceneKit 制作 3D 场景框架
  4. Leetcode 187. 重复的DNA序列 解题思路及C++实现
  5. FPGA大数据之我认为的明天
  6. Linux下的TCP Wrapper机制
  7. 平切分,分库,分表,主从,集群 数据库水平切分的实现原理解析
  8. 12种主要的Dropout方法:如何应用于DNNs,CNNs,RNNs中的数学和可视化解释
  9. 如何用Pygame写游戏(二)
  10. java代码获取gc信息,如何监视Java垃圾回收
  11. 文件--非连续空间存放方式
  12. JS学习总结(11)—— JSON
  13. 使用think_queue实现未支付订单半小时取消
  14. python神经网络模型调用后预测值不变_用R语言实现神经网络预测股票实例
  15. 你鼓舞了我是世界杯主题曲吗_20位鼓舞人心的科技女性
  16. 设置水平线高度html代码是size,html水平线样式 Width:设置水平线的宽度
  17. HY-SRF05 五针超声波测距模块 在stm32f4上实现 附代码 个人经验
  18. python爬虫安装教程_环境安装-Python 原生爬虫教程 | IT大叔
  19. PS亮度蒙版工具:Lumenzia for Mac(支持ps2022)
  20. 直播美颜sdk免费版有吗?为什么美颜sdk没有免费版?

热门文章

  1. 小妍老师软考真题解析!!信息系统项目管理师(高项)--最新23年5月(案例分析)
  2. Linux教程第四版(孟庆昌)--思考题 4 答案
  3. WORD与DWORD
  4. 记一次uboot 中出现的 data abort 错误
  5. qt计算机析构函数,QT退出不会调用MainWindow析构函数
  6. CSS - table超出父级div
  7. 几种常见PCB表面处理优缺点分析,用对场景很重要
  8. java源程序分为两大类_java源程序分为两大类
  9. 流程图软件 drawio 快捷键 使用技巧
  10. 【FFMpeg】获取ffmpeg版本号