The Elder Scrolls V: Skyrim

The Elder Scrolls V: Skyrim

View Stats:
Stania Jun 29, 2013 @ 11:40pm
Reduce or eliminate Skyrim random CTD's on your 32-bit Windows 7
Hello everybody. Instead of coming up with a problem, I'm here to offer a little solution that may be useful for some of you that perhaps didn't know about the 3GB switch.
I'll try to explain what is it, what does it have to do with Skyrim and how can you access to it to solve one of the most common problems with the game. Please, excuse my english.

Let's say you have a nice computer, with a 64-bit processor, and 4GB of RAM minimum. For some reason you have installed a 32-bit Windows 7 on it, and you don't have the time/mood to move to a 64-bit version yet.
Or simply your beauty has a 32-bit processor and 4GB of RAM.
Your precious Skyrim is suddenly crashing to desktop like... everytime while you're playing, forcing you to save on every step you take. You noticed that it occurs specially during a snowstorm or when you approach to Windhelm. And the most important thing: This happens without any mod installed.

You're having a memory access issue. Fortunately, there's an alternative. Take note that 32-bit W7 only can access to a maximum of 4GB of RAM.

Well, what does a 3GB switch do? It allows you to access to 3GB of memory for user applications, when normally a 32-bit W7 only makes available 2GB for this purpose, assigning the remaining 2GB for kernel processes (you'll have 1GB for the kernel after the switch activation, usually enough for your Operative System to work).

Yeah, yeah, tl;dr. How can this help with my CTD problem?

Your games *cough*Skyrim*cough* and graphic applications (3DS Max, Maya, Solidworks, and others) are less limited in terms of memory access, decreasing the chance of slowing down your computer while you're using them, and therefore reducing or even eliminating the number of crashes to desktop.

This may not work with some computers, it will depend of your graphics hardware or drivers. Make sure to have your graphics drivers and operative system updated before you try to do this. DO IT AT YOUR OWN RISK.

To enable the 3GB switch follow these steps:

-Click on start. On the search bar write "cmd".
-Right click on the program that appear in the menu, select "Run as Administrator" the Command Prompt will be open.
-Write bcdedit /set IncreaseUserVa 3072 press enter.
-Write exit and press enter to close the Command Prompt.
-Restart your computer.

That worked wonderfully for me, I not longer have random CTD's even with some graphic overhauling mods and the Unreal Cinema ENB installed. I don't see negative side effects on my system.

If you're still having problems after you do this, or worse, you deal with new ones, you could try using a value of 2700 (2.7GB) instead of 3072. If it didn't work either, you can (and have to) disable it. Start to consider moving to 64-bit version if your system support it.

To disable the switch do the following:

-Open the Command Prompt again, remember to do it as administrator.
-Write bcdedit /deletevalue IncreaseUserVa, press enter.
-Close the Command Prompt.
-Restart your PC.

It's not a good idea to use more than 3GB (a value bigger than 3072), your system may start to give you error messages about having problems to load drivers and other stuff.

Ok, I hope it helps you. If you have a question feel free to comment, If I don't know the answer, we can investigate and learn together, even other users around here can share their knowledge with us and smack the ignorance out of our brains. See ya.
Last edited by Stania; Jun 29, 2013 @ 11:52pm
< >
Showing 1-6 of 6 comments
IceKing Jul 18, 2013 @ 3:20am 
Sorry for the incoming noob question. Would this do anything on a 64-bit system?
Stania Jul 18, 2013 @ 1:10pm 
If you already have a 64-bit operative system, the 3gb switch is not necessary. In fact, that switch is not actually supported by 64-bit versions of windows.
ShinyToyGuns Jul 18, 2013 @ 3:38pm 
This is correct. It also applies to other Microsoft Windows versions, though the particular technique to enable it may differ. I've added some geeky details for the nerds.

With a 32-bit version of (most recent) Microsoft Windows (XP, Vista, 7, I don't know about 8) operating system, an application is limited to using only 2GiB of virtual address space because the virtual memory address space is split to 2GiB for the application and 2GiB for the OS. With the switch enable you can access at least 3GiB of memory (assuming you have that much RAM, otherwise it is not recommended) for a single application.

For the most benefit, the 32-bit application needs to be Large Address Aware (LAA) which is simply a Win32 PE flag that needs to be enabled, to take advantage of this. In fact in older editions of The Elder Scrolls series (i.e. Morrowind and Oblivion[oblivion.nexusmods.com] perhaps) there are generic 3rd-party tools[www.ntcore.com] to enable LAA on the game's executable.

Your CPU needs to support PAE (Physical Address Extension) I believe for the above technique to work. Not all CPUs that are capable of running Windows 7 (or XP, Vista, etc.) will have this feature. You can use a free 3rd-party utility like CPU-Z[www.cpuid.com] to check to see if your CPU supports it.

So more details are available from Large Address Aware @ ACMer[www.zhihua-lai.com] and 4-Gigabyte Tuning[msdn.microsoft.com] (from Microsoft, but Windows Server oriented).

Users of 64-bit versions of MS Windows (Vista, 7) automatically have the larger virtual memory address space per process available, and so any LAA flagged 32-bit applications can be practically up to 4-GiB of RAM per process. In the case of 64-bit native applications on a 64-bit OS, there is no need for the LAA flag.

tl;dr: Most gamers will want to select a 64-bit OS version for their present or next PC system with lots of RAM, since its cheap (now).

NB: I do use the Mebibyte[en.wikipedia.org] abbreviation to clarify the power-of-twos relationship, as memory and storage are sometime quoted in decimal (power of ten) based for metric / SI Megabytes (one million == 10^6 bytes versus 1048576 bytes == 2^10) for advertising purposes to "inflate" the advertised values.
Last edited by ShinyToyGuns; Jul 18, 2013 @ 3:40pm
Stania Jul 18, 2013 @ 4:07pm 
Thanks, ShinyToyGuns for your valuable information. :)
kenneth.underwood Jul 18, 2013 @ 4:37pm 
The STEP project has identified a problem with Skyrim that will cause a CTD when Skyrim reaches a memory allocation of 3.1GB (http://forum.step-project.com/showthread.php?tid=1929). Using "Skyrim Performance Monitor" (SPM), I have looked into this issue and I believe that this is a .NET garbage collection problem. This is not a problem with .NET, but an issue where Skyrim allocates memory faster than the garbage collector releases deallocated memory. Since Skyrim is designed to run on a 32 bit system which would require some of the 4GB of RAM for the OS and drivers, the 3.1GB boundary sounds like a plausible limit.

As a test I saved a game when SPM showed I had at least 2.5GB allocated. When I reloaded the save, SPM reported that Skyrim had only allocated some 600MB. The diference must have been deallocated memory that had not been released by the garbage collector. This would seem to be an oversight by Bethesda as .NET provides the ability to dispose of resources under program control rather than wait for the garbage collector.
Last edited by kenneth.underwood; Jul 18, 2013 @ 6:11pm
ShinyToyGuns Jul 21, 2013 @ 11:04am 
Originally posted by kenneth.underwood:
The STEP project has identified a problem with Skyrim that will cause a CTD when Skyrim reaches a memory allocation of 3.1GB (http://forum.step-project.com/showthread.php?tid=1929).

From vague memory I believe many 32-bit systems end up only being theoretically able to utilize a maximum of 3.25 GiB per process as a limit due to BIOS and OS / driver overhead. So a 3.1 GiB in a real application limit is hardly worth being disappointed by. It is simply a limit to the PAE, which is in essence a hack.

Originally posted by =kenneth.underwood:
I believe that this is a .NET garbage collection problem. This is not a problem with .NET, but an issue where Skyrim allocates memory faster than the garbage collector releases deallocated memory.

AFAIK the Gamebryo engine and the scripting environment both are evolved from the versions Bethesda has used in earlier Elder Scroll titles (and I think Fallout 3 & New Vegas) from well before the creation of .NET. I believe you have the .NET GC confused with general application oriented (as opposed to OS-level MM) memory management.

Originally posted by =kenneth.underwood:
As a test I saved a game when SPM showed I had at least 2.5GB allocated. When I reloaded the save, SPM reported that Skyrim had only allocated some 600MB.

Exactly as one would expect. And as soon as your character does something (i.e. move into another cell) those additional cells would need to be loaded and rendered as there is nothing other than the minimum required cached ("paged"). The trade-off is that Skyrim should not be too aggressive de-allocating memory, otherwise turning around or taking a step backwards could cause a large number of page faults, slowing down the game by suddenly needing to re-load / re-calculate everything it just discarded.

Think of it as loading a saved graphic image file in a paint program. You don't get the undo-redo buffer memory of the last session included when you reload the image when you restart the paint program. The idea of decreased file size and memory usage is similar.
Last edited by ShinyToyGuns; Jul 21, 2013 @ 11:06am
< >
Showing 1-6 of 6 comments
Per page: 15 30 50

Date Posted: Jun 29, 2013 @ 11:40pm
Posts: 6