程序莫名卡顿、运行速度大幅降低的一种可能因素

2024-03-25 22:20

本文主要是介绍程序莫名卡顿、运行速度大幅降低的一种可能因素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

有一次调试一个程序,在并没有改动什么代码的情况下,突然间程序性能大幅下降,降低了足足75%左右!!一番研究之后,发现..

原因

从Win7开始,微软加入了一项名叫“容错堆”的功能(英文名称:Fault Tolerant Heap,简写为FTH)。

根据微软的说法,容错堆 (FTH) 是一个子系统,负责监视应用程序崩溃并自主应用缓解措施,以防止系统将来发生崩溃。。

这个缓解措施非常的粗暴,将程序性能降低75%左右~~

当然,可能还有其它的缓解措施,比如阻止程序继续运行。。

可怕的是,程序被限制之后,即使重启电脑也不会恢复!

以前常听人说,电脑用的时间越久就越容易卡。大多数人都把目光聚焦在什么垃圾文件太多,磁盘碎片太多,温度过高等等问题上,包括我。。

后来发现了FTH这个功能后,有种恍然大悟的感觉!莫不是因为这?

检查

那怎么知道程序有没有被FTH限制?

三个方法:

方法一:将怀疑被限制的程序,修改一下文件名再运行,看性能是否提高!

方法二:在运行或者cmd中输入 regedit 打开注册表编辑器,定位到键值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\State

看看右侧有没有键值,如图:

右侧的文件路径,就是被FTH限制的程序。

方法三: 打开 事件查看器->应用程序和服务日志->Microsoft->Windows->Fault-Tolerant-Heap 通过日志查看

解除限制

解除限制的方法也很简单

方法一:打开注册表编辑器,将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\State

键值下的内容全部删除

方法二:在运行或者cmd中输入命令:Rundll32.exe fthsvc.dll,FthSysprepSpecialize

但这两个方法,都只是解除目前被限制的程序,往后仍可能出现程序被限制。

一劳永逸的方法

要想一劳永逸,最直接的方法,当然是将这个功能关闭!

打开注册表编辑器,定位到键值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH

 将右侧的 Enabled 键值修改为0,重启电脑即可彻底关闭这个功能!

只为指定的程序关闭“容错堆”功能

和上面彻底关闭的方法在同一个位置,不过键值有所不同:

 ExclusionList (排除的进程列表)

 将要排除的程序名称,加入列表确定即可!

 其它影响

刚百度了一下,发现容错堆(FTH)这个功能,还有可能影响到3DS MAX等软件的渲染性能!

所以,应该关闭它吗?

结论

当然应该关闭它!!

自从2015年发现“容错堆”(FTH)这个功能以来,我就没有让它再出现在我的系统中!无论是网吧系统,还是家用、办公系统!

到目前为止,并没有发现关闭它会有什么负面影响。。

除了使用注册表来关闭,也可以在运行或者CMD中输入下面两条命令:

reg add HKLM\SOFTWARE\Microsoft\FTH -t REG_DWORD /v Enabled /d 0 /f

Rundll32.exe fthsvc.dll,FthSysprepSpecialize

最后附上微软官方文档:容错堆 - Win32 apps | Microsoft Docs容错堆icon-default.png?t=M4ADhttps://docs.microsoft.com/zh-cn/windows/win32/win7appqual/fault-tolerant-heap

这篇关于程序莫名卡顿、运行速度大幅降低的一种可能因素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846416

相关文章

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创