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

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

相关文章

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

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

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p