Thursday, May 20, 2010

Memtest86+ rules!

About two months ago I upgraded my system from Windows XP to Windows 7 64-bit, and at the same time from 4G to 8G RAM.  As always happens, I was amazed how much faster a new Windows installation was than the old one on the same hardware -- it is insidious how "Windows Decay" chips away at performance. 

About a week ago, the system started behaving badly -- IE crashing, Thunderbird crashing, and starting yesterday, the whole thing blue-screening.  After wasting a lot of time trying to figure out "what software was updated recently", I started to suspect memory errors.  So I ran the Windows memory test program that shows up on the boot screen -- nothing. 

After more dorking around, I downloaded and ran MemTest86+ (, burned it to a USB drive, and ran it.  It immediately found thousands of memory errors; by trying various combinations and moving modules from slot to slot, I was able to identify the bad modules.  I had bought Crucial's top of the line (Ballistix Tracer LED) from Newegg; the Crucial folks immediately shipped out a replacement. 

Given how many errors  MemTest found, its amazing that the Windows test found nothing. 

Thumbs up for MemTest86+ and Crucial customer service.  Thumbs down for Windows Memory Test. 


  1. I am surprised when you said "I was amazed how much faster a new Windows installation was than the old one on the same hardware". I always need a new PC every time I install a new MS OS ;-)
    So when will a new book with "Java Concurrency In Practice"'s caliber be written? So far that's the best concurrency in Java I have read.

  2. After a great deal of trial and error (including sending back two DIMMs to Crucial), I came to the conclusion that the problem was neither bad memory nor overheating, but that the motherboard couldn't really handle the 8G. Ended up buying a new i7-based system from Cooltech, which is working fine.

  3. Hi Brian,

    Does setting objects to Null after usage helps GC?
    In JDK thread class I see class variables were set to null in "exit()" method; but I don't see that pattern a lot in new JDK classes.