My program's performance is sometimes being cut in half due to Windows 7 embedding a 'fault tolerant heap'. There's not much info out there about the FTH but this is what I've been ab开发者_Go百科le to ascertain.
The FTH usually gets added due to heap errors. I cannot find a way to be notified which errors are causing it to enable.
The FTH will blacklist applications by filename, so even if you fix the errors it will still embed in your application, and maybe eventually go away (so yes, not even trial and error can tell you which error is causing it to embed. Random flailing seems to be the only answer). How these decisions are made are opaque. I renamed my app and the FTH went away, and performance was restored back to normal, so it must be tracking the filename somehow.
There is a way to turn off the FTH and prevent it from embedding on my PC, but there's no guarantee it won't embed on a user's PC cutting their performance in half.
There is almost no documentation about this feature. The best I can find is an hour long video of an engineer discussing it here: http://channel9.msdn.com/shows/Going+Deep/Silviu-Calinoiu-Inside-Windows-7-Fault-Tolerant-Heap/
Does anyone know more details on this feature and how to banish it from my application?
精彩评论