Ano, JRE je plné děr. Je pěkné, že Java nesvádí k chybám tolik jako C/C++, a lépe se verifikuje. Když je ale děravé JRE, je to na nic.
Programátoři budou dělat chyby vždycky, protože jsou to lidé. Zlepšení situace je možné použitím jazyků, které nejsou náchylné k chybám, a verifikací kódu. Trochu to komplikuje fakt, že OS jsou psané v C/C++, mají primární API pro určené C/C++ (Win32, libc), a nad tím teprve stavíme v C/C++ runtime knihovny pro vyšší jazyky. Je potřeba bezpečnější jazyky dostat blíž směrem k HW: do frameworků (.NET je psaný z velké části v C#), OS a driverů. A samozřejmě provádět formální verifikaci a model checking.
MS samozřejmě má nástroje pro hledání memory leaks, pro native code i managed code. Nejspíš je všechny ani neznám. Vyjma má spoustu dalších nástrojů: Static Driver Verifier, source-code annotation language (SAL) včetně driverů, jeho C runtime má pár security features... Pěkné, ale programátoři jsou nesmírně vynalézaví :/.
http://msdn.microsoft.com/en-us/library/x98tx3cf(v=vs.120).aspx
http://blogs.msdn.com/b/dotnet/archive/2013/04/04/net-memory-allocation-profiling-with-visual-studio-2012.aspx
http://www.microsoft.com/en-us/download/details.aspx?id=40336
http://msdn.microsoft.com/en-us/library/windows/hardware/ff552808(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/hh916383.aspx
http://msdn.microsoft.com/en-us/library/8ef0s5kh.aspx
Memory leaks jsou jen jedním z mnoha problémů. Práce s pamětí je v C/C++ tak divoká, že třeba ty browsery dodnes obsahují řadu chyb buffer overrun.
Ad windows nevydrzi ani mesiac bez resetu - už NT 4 mi jely bez restartu řadu měsíců. Pokud vaše Windows nepřežijí ani měsíc, nejspíš budete mít problém s drivery nebo HW.