我有一个在VB6下使用正则表达式的应用程序。 它在XP下完美运行但在Win7下我遇到了大量问题。 有时,当传递给正则表达式函数的文本是> 20KB它冻结了应用程序以及整个win7系统:它变得非常缓慢,几乎完全冻结,并且仅在约30秒后反应几秒钟并再次冻结。
奇怪的是 - 如果我在taskmanager下终止VB6任务,整个系统仍然缓慢,冻结和不稳定。它就像是在100%cpu负载上运行,尽管它是正常的。 似乎是一个吃掉所有资源的系统事物,唯一有帮助的就是重新启动。
任何人都经历过同样的事情/知道解决方案吗? 我已经谷歌搜索但找不到任何东西。
至少有一些方法来终止正则表达式函数,以防它花费太长时间吗?
THX
答案 0 :(得分:1)
应用程序是多线程的吗?您是否也将硬件从单核CPU升级到多核/多CPU?
通常情况下,当正则表达式变得流氓时,它会导致堆栈溢出或进入(显然)无限循环,但听起来就好像没有发生在你身上。您描述的症状听起来更像是死锁:多个执行线程争用同一资源。
针对Java的正则表达式包报告了一些错误,结果证明它们与并发相关,而与正则表达式本身无关。根错误一直存在,但它无法在单核机器上显示,即使在名义上的多线程应用程序中也是如此。在大量用户转向多核硬件之前,它没有得到报告。
我并不是说像VB中那样存在VB6中的并发错误;更有可能是你的应用程序。如果应用程序是多线程的,请尝试消除该方面,看看它有什么效果。如果不是,或者这没有帮助,我们需要更多信息;你原来的问题没有太多可以继续下去。