"Fault Tolerant Heap"(FTH)是Windows操作系统的一个特性,旨在提高应用程序的稳定性 自动检测和修正某些类型的应用程序错误,从而减少应用程序崩溃的频率。

"Fault Tolerant Heap"(FTH)是Windows操作系统的一个特性,旨在提高应用程序的稳定性。它首次出现在Windows 7和Windows Server 2008 R2中,作为操作系统的一部分,用于自动检测和修正某些类型的应用程序错误,从而减少应用程序崩溃的频率。

FTH的工作原理

当应用程序频繁崩溃时,FTH会自动介入,对该应用程序启用一系列的缓解措施,以尝试提高其稳定性。这些措施包括但不限于:

  • 堆损坏检测:在堆操作中添加额外的检查,以便更早地发现并避免堆损坏。
  • 内存分配错误的恢复:在内存分配失败时尝试自动恢复,例如通过返回先前分配的内存块。
  • 延迟释放内存:延迟释放应用程序不再使用的内存,以减少因释放顺序错误导致的崩溃。
  • 序列化堆访问:通过序列化对堆的访问来减少竞争条件,这在多线程应用程序中特别有用。

为什么需要FTH

应用程序可能因各种原因崩溃,包括编码错误、资源管理不当、不兼容的库版本等。FTH的目的是在不需要开发者干预的情况下,自动提供一种机制来增加应用程序的稳定性,特别是对于那些可能不再被积极维护或更新的旧软件。

FTH的影响

  • 正面影响:FTH可以显著提高易出错应用程序的稳定性,减少因应用程序错误导致的崩溃,从而提高用户体验。对于企业环境,它有助于减少IT支持请求,相关于应用程序崩溃问题。
  • 潜在负面影响:虽然FTH旨在提高应用程序的稳定性,但它可能会引入额外的性能开销,因为额外的检查和缓解措施需要消耗CPU和内存资源。此外,FTH的介入可能掩盖了底层的代码问题,导致这些问题更难被发现和修复。

 

"Fault Tolerant Heap"(FTH)作为Windows操作系统的一个特性,其主要目标是增加应用程序的稳定性,尤其是对于那些可能因为代码中的缺陷而频繁崩溃的应用程序。从它首次被引入到后续的Windows版本中,FTH的核心目标保持不变,但随着技术的发展和用户反馈的积累,微软可能对其进行了一些优化和改进以更好地实现这一目标。下面是一些可能随着不同Windows版本出现的FTH功能特性的差异和发展:

  1. 错误检测和自动启用:FTH的基本机制包括检测特定应用程序的崩溃模式,并在检测到频繁崩溃时自动启用。随着操作系统版本的更新,微软可能改进了错误检测算法,使得FTH能够更智能地识别哪些崩溃可以通过启用FTH来缓解。

  2. 内存管理改进:FTH试图通过改变应用程序的内存分配行为来减少崩溃。这可能包括对堆分配的策略进行调整,例如实现更严格的内存覆写检测、提供额外的内存边界保护等。随着新版本的推出,这些策略可能会得到进一步的优化或增加新的内存管理特性。

  3. 兼容性和性能调整:虽然FTH的目的是提高应用程序的稳定性,但它也需要平衡兼容性和性能的影响。在不同的Windows版本中,微软可能细化了FTH的工作方式,以确保它在减少应用程序崩溃的同时,对应用程序的性能和兼容性影响最小。

  4. 配置和管理能力:随着时间的推移,针对开发者和IT专业人员,微软可能增强了FTH的配置和管理工具,提供了更多的选项和控制来启用、禁用或调整FTH的行为,以适应不同的应用场景和需求。

  5. 诊断和日志记录:为了帮助开发者和系统管理员更好地理解FTH如何影响应用程序,微软可能改进了FTH的诊断和日志记录功能,提供更详细的信息来分析崩溃原因和FTH的介入效果。

  6. 用户界面和工具支持:随着时间的推进,微软可能在操作系统中引入了更多的用户界面工具或命令行工具,以便用户和管理员更方便地管理和监控FTH的状态。例如,通过事件查看器(Event Viewer)、性能监视器(Performance Monitor)或特定的管理命令,用户可以更直观地了解FTH的活动和对应用程序稳定性的影响。

  7. 集成诊断框架:Windows操作系统本身包含了丰富的诊断框架和故障排除工具。随着新版本的发布,FTH可能更紧密地与这些框架集成,使得当应用程序崩溃时,系统能够提供更详细的诊断信息或自动触发特定的故障排除步骤。

  8. 安全性考虑:在不断发展的网络环境中,安全性始终是操作系统关注的重点。FTH的实现和调整也可能考虑到了增强应用程序和系统的安全性,比如通过限制某些可能被恶意利用的内存操作来减少安全漏洞的风险。

  9. 云和远程场景优化:随着云计算和远程工作的普及,应用程序的运行环境变得更加多样化。FTH可能在这些场景下进行了特别的优化,以确保在虚拟化环境或远程桌面服务等情况下,应用程序的稳定性得到有效保障。

  10. 反馈机制和自学习能力:理论上,随着人工智能技术的发展,微软可能会探索将更多智能化的元素集成到FTH中,比如通过分析大量应用程序崩溃数据来自动调整FTH的策略,或者通过机器学习算法预测并防止潜在的崩溃。

 

"Fault Tolerant Heap"(FTH)是一个Windows操作系统的特性,旨在提高应用程序的稳定性。当Windows检测到某个程序频繁崩溃时,FTH可以自动介入,尝试通过各种兼容性调整来减少这些崩溃。这可能包括对内存分配的管理方式进行调整,以避免常见的内存错误导致的崩溃。

FTH首次引入是在Windows 7和Windows Server 2008 R2中。随后,它被保留并继续存在于后续的Windows版本中,包括但不限于Windows 8、Windows 8.1、Windows 10以及Windows Server的相应版本。

至于FTH的不同“版本”,通常情况下,我们不太将其视为有不同的“版本”,而是将其看作是Windows操作系统功能的一部分,随着操作系统的更新而得到改进和优化。因此,具体的FTH行为和特性可能会根据你所使用的Windows操作系统版本(如Windows 7、Windows 10、Windows Server 2016等)有所不同。

 


power shell命令 列出FTH部分参数,可以进行调优,如果实在对程序员和使用者有影响,建议全局关闭。

power shell命令 Get-ItemProperty -Path "HKLM:\Software\Microsoft\FTH" 显示了注册表键 HKEY_LOCAL_MACHINE\Software\Microsoft\FTH 下的所有属性及其对应的值。以下是这些属性的简要解释:

  • CheckPointPeriod: 检查点周期(以分钟为单位),用于确定何时检查堆错误。
  • CrashVelocity: 崩溃速度阈值,用于衡量在指定时间内崩溃次数是否达到启用FTH的标准。
  • CrashWindowInMinutes: 在这段时间内,如果进程崩溃次数达到一定数量,FTH将被激活。
  • Enabled: 是否全局启用FTH功能。1表示启用,0表示禁用。
  • ExclusionList: 列出了不受FTH监控的进程列表。
  • MaximumAllocationOverheadInMBs: 分配内存时允许的最大开销(以MB为单位)。
  • MaximumDelayFreeOverheadInMBs: 延迟释放内存时允许的最大开销(以MB为单位)。
  • MaximumMemoryPressurePercentage: 内存压力达到这个百分比时,FTH开始执行其策略。
  • MaximumTrackedApplications: 最大可跟踪应用程序的数量。
  • MaximumTrackedProcesses: 同一时间最大可由FTH监控的进程数。
  • RuleList: 一系列规则,可能与特定模块、异常类型等关联,决定何时启用FTH。
  • TicketValue: 不明确,可能与FTH内部管理机制相关。
  • CheckPointTime: 上一次检查点的时间戳。
  • PSPath 至 PSProvider: 这些是PowerShell内置对象属性,提供了关于当前注册表路径的信息。

 

PowerShell命令来查询FTH的ExclusionList(排除列表):

powershellCopy Code
Get-ItemProperty -Path "HKLM:\Software\Microsoft\FTH" -Name "ExclusionList"

这条命令将获取注册表路径"HKLM:\Software\Microsoft\FTH"下名为"ExclusionList"的属性值。

 

PowerShell命令,用于完整显示FTH的ExclusionList(排除列表):

powershellCopy Code
$exclusionList = Get-ItemProperty -Path "HKLM:\Software\Microsoft\FTH" -Name "ExclusionList"
Write-Host "ExclusionList: $($exclusionList.ExclusionList)"

这条命令将获取注册表路径"HKLM:\Software\Microsoft\FTH"下名为"ExclusionList"的属性值,并使用Write-Host命令完整显示ExclusionList的内容。

 

启用或禁用FTH

在Windows Server 2022中,启用或禁用FTH的方法与其他Windows版本相同,通过修改注册表实现。请确保谨慎操作,并在进行更改前备份注册表。

禁用FTH:

powershellCopy Code
Set-ItemProperty -Path "HKLM:\Software\Microsoft\FTH" -Name "Enabled" -Value 0

启用FTH:

powershellCopy Code
Set-ItemProperty -Path "HKLM:\Software\Microsoft\FTH" -Name "Enabled" -Value 1

 

posted @ 2024-02-06 16:40  suv789  阅读(110)  评论(0编辑  收藏  举报