QWebSocketServer-不释放内存
首先,我在安全的WebSocket服务器应用程序上运行了Valgrind,并找到了问题(在QT Memcheck中,我必须检查"外部错误" 才能看到它) - 某些字节肯定是 - 指向我的main我的QCoreApplication::exec()在哪里.在堆栈跟踪中,调用后,只有一些QT库,从libQt5Core开始,并以libQt5WebSockets结尾.丢失字节的数量随建立的连接数量而增加.我仔细检查了我删除了QWebSocketServer::nextPendingConnection()返回的所有QWebSocket实例.我还删除了QWebSocketServer实例.有趣的是,Valgrind在运行 sslechoserver 演示时,或以无安全模式运行我的服务器(无SSL)时不会报告任何错误.我不知道这是否是一个实际问题. 其次,更重要的是,我观察到消耗的内存会随着每一个新连接而不断增加(即使关闭了旧连接并且其QWebSocket实例已删除,实际上,大多数情况下,我的
0 2023-12-02
编程技术问答社区
排列请求的匿名监听器导致内存泄漏
我正在使用射击库来进行网络服务.我参加了一个通用课,以从那里进行所有Web服务电话并进行服务呼叫,并为成功和错误响应做了匿名听众. ,但是当我使用泄漏金丝雀时,它显示了与上下文相关的内存泄漏.以下是我的代码段: public void sendRequest(final int url, final Context context, final ResponseListener responseListener, final Map params) { StringRequest stringRequest; if (isNetworkAvailable(context)) { stringRequest = new StringRequest(methodType, actualURL + appendUrl, new Listener() { @Override
0 2023-12-02
编程技术问答社区
为什么一些Web服务器抱怨它们造成的内存泄漏?
标题可能有点强大,但让我解释一下我如何理解发生了什么.我猜这是tomcat发生的(引用的消息来自tomcat),但我不确定. tl; dr在底部有一个摘要,为什么我声称这是网络服务器的错. 我可能是错误的(但是没有可能错误的可能性,就没有理由问): 应用程序使用库 图书馆使用ThreadLocal ThreadLocal是指库中的对象 每个对象都指其ClassLoader Web服务器 汇总其工人线程以提高效率 将任意线程借给应用程序 当应用程序停止或重新部署时,什么也不是特别的(W.R.T.线程池) 如果我正确理解,在重新部署后,旧的"肮脏"线程继续重复使用.他们的ThreadLocal s是指旧类,指的是其ClassLoader,该类别指的是整个旧类层次结构.因此,随着时间的流逝,很多东西都留在PermGen空间中. 这是正确的吗? 我假设有两件事: 线程创建开销是毫秒的一小部分 因此,每个重新部件上的一个完整的线程池更
0 2023-12-02
编程技术问答社区
用XML包解决R的内存泄漏问题的办法
我正在尝试运行一些简单的程序来从HTML代码中提取表.但是,XML软件包中的readhtmltable似乎存在一些内存问题.有什么办法可以轻松地解决这个问题.就像以某种方式为此命令指定一些特殊的内存,然后手动释放它. 我试图将其放置在一个函数中,并尝试使用gc()和不同版本的R和此软件包,但似乎无效.我开始变得绝望. 示例代码.如何在不爆炸内存大小的情况下运行此操作? library(XML) a = readLines("http://en.wikipedia.org/wiki/2014_FIFA_World_Cup") while(TRUE) { b = readHTMLTable(a) #do something with b } 编辑: 像这样的事情仍然需要我所有的记忆: library(XML) a = readLines("http://en.wikipedia.org/wiki/2014_FIFA_World_Cup") f
4 2023-12-01
编程技术问答社区
MonoTouch-WebRequest内存泄漏和崩溃?
我有一个单触摸应用程序,该应用程序使用3.5MB文件执行HTTP帖子,并且在我在主平台上非常不稳定(我在我在主平台上都非常不稳定(iPhone 3G带有OS 3.1.2和iPhone 4带有OS 4.2.1的iPhone 4 ).我会描述我在这里做什么,也许有人可以告诉我我是否做错了什么. 为了排除我的应用程序的其余部分,我将其缩减为一个小示例应用程序.该应用程序是一个iPhone OpenGL项目,仅执行此操作: 在启动时,在30k块中分配了6MB的内存.这模拟了我的应用程序的内存使用量. 将3.5MB文件读取到内存中. 创建一个线程以发布数据. (制作WebRequest对象,使用getRequestStream(),然后写入3.5MB数据). 当主线程检测到发布线程是否完成时,goto步骤2并重复. 另外,每个帧,我分配0-100K来模拟该应用程序做某事.我不保留对这些数据的任何参考,因此应该收集垃圾. iPhone 3G结果:该应用程序通过6到8个上
0 2023-12-01
编程技术问答社区
在通过webpack进行捆绑时,获得GC,进程超出内存的错误
将我的项目与webpack捆绑在一起时会遇到以下错误. 当我只有几个块(拆分)点(需要. 124541 ms: Mark-sweep 1379.0 (1457.1) -> 1378.9 (1457.1) MB, 891.6 / 0 ms [allocation failure] [GC in old space requested]. 125398 ms: Mark-sweep 1378.9 (1457.1) -> 1378.9 (1457.1) MB, 857.0 / 0 ms [allocation failure] [GC in old space requested]. 126289 ms: Mark-sweep 1378.9 (1457.1) -> 1378.9 (1457.1) MB, 890.5 / 0 ms [last resort gc]. 127136 ms: Mark-sweep 1378.9 (14
0 2023-12-01
编程技术问答社区
如何在Eclipse中强制线程转储?
我正在通过BEA WebLogic Server v9.2运行时环境启动Eclipse内部的Weblogic应用程序.如果这是从命令行直接运行的,我会做一个ctrl-break迫使线程转储.有没有办法在Eclipse中进行? 解决方案 的确(感谢VONC指向SO线程),Dustin在对他的消息的评论中,指向 jstack . 我在eclipse中运行了一个小Java应用程序(使用GUI),我可以在Windows的Process Manager及其PID中看到相关的Javaw.exe 7088(当然,它在Unix中更简单). 如果我在命令提示符jstack 7088上输入,我每个线程都有想要的堆栈转储. 酷. 如果我们可以直接从Eclipse做到这一点,那会更好,但这已经很有用. 其他解决方案 您可以在调试模式下进行:转到调试视角,单击您已启动的过程,然后单击暂停,您将获得所有过程的图形堆栈. 注意:使用远程调试时,这也有效,您无需从Eclipse
0 2023-12-01
编程技术问答社区
使用WKScriptMessageHandler时的内存泄漏
不确定我是在WebKit中击中一个错误还是我在做可怕的事情,但是我不知道如何使用WKScriptMessageHandler而不会导致WKScriptMessage.body中包含的任何值泄漏. 我能够整理一个最低MAC项目以隔离问题,但无济于事. 在主视图控制器中: class ViewController: NSViewController { var webView: WKWebView? override func viewDidLoad() { super.viewDidLoad() let userContentController = WKUserContentController() userContentController.addScriptMessageHandler(self, name: "handler") let configuration = WKWebViewConfiguration()
0 2023-12-01
编程技术问答社区
有没有办法在基于webkit的浏览器中强制使用Javascript垃圾收集器?
在Internet Explorer中,我们可以强制使用此方法执行JavaScript垃圾收集:collectGarbage(); 该方法在Firefox上不确定.你知道是否有某种等效的? 谢谢. 解决方案 (不仅将此答案限制在基于WebKit的浏览器中...) Chrome:如果您从命令行/终端启动--js-flags="--expose-gc",则提供window.gc(). Firefox我认为需要单击about:memory中的"免费内存"按钮. 歌剧有window.opera.collect(). 边缘具有window.CollectGarbage(). 野生动物园,未知. 请注意,您不应该手动运行GC.我只发布了这一点,因为它对开发测试很有用. 其他解决方案 访问about:memory. 来自Page的 关于:内存是Firefox中的一个特殊页面,可让您查看,保存, 负载和DIFF Firefox内存使用情况的详细测量
0 2023-12-01
编程技术问答社区
WKWebView导致我的视图控制器泄漏
我的视图控制器显示WKWebView.我安装了一个消息处理程序,这是一个酷的Web套件功能,该功能允许从网页内通知我的代码: override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) let url = // ... self.wv.loadRequest(NSURLRequest(URL:url)) self.wv.configuration.userContentController.addScriptMessageHandler( self, name: "dummy") } func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
0 2023-11-30
编程技术问答社区
浏览器刷新不做垃圾回收
我在所有经过测试的浏览器上都发现了这一点 - 即苹果上的窗户沙野生动物园上的IE,Firefox,Chrome和Safari. 据称,浏览器刷新,后退按钮或前向链接应丢弃浏览器节点和JavaScript变量和对象等.WebGL似乎并非如此.我首先在开发一个复杂的WebGL应用程序时注意到它,该应用程序需要约100MB到200MB的内存.在开发过程中,我必须进行大量刷新,并且我的计算机将在5-10刷新后开始放慢速度并冻结. 经过一些研究,我意识到这不应该.内存泄漏中接受的解决方案是刷新应该发布所有JavaScript对象,变量和DOM节点的页面.但是请看以下图像: 那么这里有什么交易?在小应用程序上,它没有注意到,但是对于像Mine(OrbitingEden.com)这样的大型WebGL应用程序,这是一个真正的问题,我的用户将认为该软件更像是资源HOG.下图显示了这些刷新吞噬我所有可用的内存,因此垃圾收集不起作用,/或JS和DOM对象没有发布: (来源: orbit
2 2023-11-30
编程技术问答社区
幻影js没有关闭并留下孤儿进程
在phantomjs 1.9.2上,Ubuntu 12 lts和Ghostdirver 1.04以及Selenium 2.35在测试后,我得到了悬空的phantomjs过程.有人知道如何解决这个问题吗? 这是一个演示奇怪行为的测试程序: package testing; import org.openqa.selenium.WebDriver; import org.openqa.selenium.phantomjs.PhantomJSDriver; import org.openqa.selenium.phantomjs.PhantomJSDriverService; import org.openqa.selenium.remote.DesiredCapabilities; public class PhantomIsNotKilledDemo { private static WebDriver getDriver(){ String br
0 2023-11-30
编程技术问答社区
如何修复IE WebBrowser控件的内存泄漏问题?
我试图将WebBrowser控件嵌入C#Winform应用程序中.这听起来很容易.但是,我发现每次调用导航方法时,WebBrowser控件都会吞噬很多内存.内存从未发布.内存使用量增长和增长…… 网上的许多人都有完全相同的问题,但我还没有找到令人满意的答案.这是我到目前为止发现的有关此问题的最佳讨论: 一个人建议对IE8进行升级以解决问题. 但是,无论用户是否已安装了最新的IE版本,我都需要一个可行的解决方案.我无法控制用户环境. 有人知道如何释放WebBrowser控件所采用的内存吗?有解决方法吗? WebBrowser控件有其他选择吗? 更新: 我只是做了一些测试.在工作中,我正在运行Windows XP和IE6.记忆在那里没有生长.记忆在调用导航方法时会增加,但在一段时间后将发布.在家里,我正在运行Vista,并升级为IE8.在这里,我也看不到问题了.看来该问题是特定于IE7的.因此,应将问题改编为"安装IE7时如何修复IE WebBrowser控件中
0 2023-11-29
编程技术问答社区
如何解决.NET Webbrowser控件的内存泄漏问题?
这是.NET WebBrowser Control. 摘要:让.NET WebBrowser Control导航到页面增加永不释放的内存使用. 重现内存泄漏:将WebBrowser控件添加到表单中.用它导航到您想要的任何页面.关于:空白作品,向下滚动Google图像,直到您的使用率为100MB+,然后在其他地方浏览以发现几乎没有任何记忆是释放的,这是一个更引人注目的演示. 我当前对应用程序的要求包括长时间运行它,显示有限的IE7浏览器窗口.并不需要使用一些混蛋,BHO和团体政策来运行IE7本身,尽管这看起来像是当时的后备. 将浏览器嵌入Windows表单应用程序中. 使用不同的浏览器底座对我来说不是一个可用的选择. IE7是必需的. 与此已知内存泄漏有关的先前线程和文章: /a> 如何修复IE WebBrowser中的内存泄漏控制? 内存泄漏Windows -Memory-Leak/ 通常不起作用的修复程序: 进入不同页面并不重要.关于:空白触
0 2023-11-29
编程技术问答社区
网络音频api振荡器的内存泄漏
001 我有一个小的网络仪器(请参阅上面的链接),其中有内存泄漏,我不确定如何插入它. 悬停在元素时调用以下函数(其中有几百个). function tone(id, freq, tonelength) { gainNodes.id = audioCtx.createGain(); osc.id = audioCtx.createOscillator(); osc.id.connect(gainNodes.id); // set frequency and gain osc.id.frequency.value = freq; osc.id.start(0); gainNodes.id.connect(audioCtx.destination); gainNodes.id.gain.linearRampToValueAtTime(.1, audioCtx.currentTime); gainNodes.id.gain.line
0 2023-11-29
编程技术问答社区
移动平台上的网络音频API内存泄漏问题
我正在研究一个将大量使用音频的应用程序,并且在决定是否在可以支持它的设备上使用Web Audio API的研究阶段.我整理了一个非常简单的测试床,该床加载了mp3精灵文件(大小约为600kb),具有播放和暂停按钮,还有一个销毁按钮,理论上应该允许GC回收Web Audio API实现的内存.但是,在加载和破坏了〜5次iOS撞车之后,由于记忆不足. 我已经在Xcode Instruments中介绍了Mobilesafari,实际上Mobilesafari不断地吞噬了记忆.此外,在解码时,600KB mp3使用〜80-90MB的内存. 我的问题是 - 当使用Web Audio API解码音频数据时,为什么内存的使用情况如此之大,为什么内存从未回收?从我的理解来看,解码是浏览器的异步操作,因此可能发生在单独的线程上吗?浏览器是否有可能单独的线程永远不会释放解码过程中使用的内存? 我的代码在下面,任何帮助/解释都非常感谢:
0 2023-11-29
编程技术问答社区
关键的瓜娃内存泄漏-需要解决方法
有什么方法可以解决 Google Guava r15 内存泄漏(链接到错误报告)在缓存组件中? (不依赖应用程序服务器可能会清理内容和/或考虑将永远不会重新启动/重新部署Web应用程序) 解决方案 我想您不需要关心它. tomcat消息说 线程将随着时间的推移而续签,以避免可能的内存泄漏. iiuic这意味着一旦所有旧线程都消失了,所有的指针都会适用于您的班级的旧版本. 详细信息:线程池的原因是线程创建的巨大成本.当您得到一个正在做其他事情的线程,线程并非无状态时,池本身就被骇客了.假设您需要很多,并且永远不会回收线程,则线程创建是昂贵的.每隔几分钟续订所有线程并没有错,所以我希望,Tomcat的解决方法可以完美解决. 但事实并非如此. 编辑 恐怕,我误解了一些东西.链接的错误说 似乎使用Guava Cache的Web应用程序可能会面临内存泄漏. 经过几次重新部署后,应用程序集装箱带有OutofMemoryError崩溃或摊位. 我
0 2023-11-29
编程技术问答社区
如何在Java中对弱引用的回调进行垃圾回收?
我正在阅读 joshua bloch .在项目7中:消除第2章的过时对象参考他说: 第三个常见的内存泄漏来源是听众和其他 回调.如果您实现了客户端注册回调的API 但是,不要明确地检查它们,除非您 采取一些行动.确保回调为垃圾的一种方法 迅速收集的是仅存储虚弱的参考,因为 实例,仅将它们存储在弱hashmap中. 我了解WeakHashMap的概念.我为模拟缓存实施了一个: /** Example courtesy of Baeldung */ public class WeakHashMapDemo { public static void main(String[] args) { /** Ideally, we want a Map implementation that allows GC to automatically delete unused objects. * When a key of a big ima
0 2023-11-29
编程技术问答社区
WeakReference和内存泄漏
我正在使用VisualVM分析我的应用程序,并且我看到堆尺寸在大约3天内增加了约7MB.当我使用内存采样器时,我还看到java.lang.ref.WeakReference在实例编号的前五名中. WeakReference的数量正在增加,而GC几乎没有影响. 有什么想法吗? 解决方案 您没有内存泄漏. java的GC仅在堆满时运行(实际上更为复杂,因为堆本身分为几代,但无论如何),因此,除非您填充堆(这很不可能是因为7MB的内存太少了对于任何堆)您无法告诉您是否有泄漏. WeakReferences是小型包装纸,实际上是通过标记它们将其引用的GC的OBJET标记为可观的,可以帮助防止记忆泄漏.我的猜测是,您包括某种造成其中一堆的缓存库,而且由于堆仍然有足够的空间,因此无需垃圾收集. 再次,除非您看到GC经常运行,并且您的堆大小仍然会增加我不必担心内存问题. 这是一篇很棒的文章 其他解决方案 弱转移是最早收集的,以防JVM运行完整的GC,但是,
0 2023-11-29
编程技术问答社区