Garbage collection, and GC languages will never ever be suitable for safety critical systems.
http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1642624
http://spinroot.com/p10/
The Power of Ten -- Rules for Developing Safety Critical Code, IEEE Guidelines
1 Restrict to simple control flow constructs.
2 Give all loops a fixed upper-bound.
3 Do not use dynamic memory allocation after initialization.
4 Limit functions to no more than 60 lines of text.
5 Use minimally two assertions per function on average.
6 Declare data objects at the smallest possible level of scope.
7 Check the return value of non-void functions, and check the validity of function parameters.
8 Limit the use of the preprocessor to file inclusion and simple macros.
9 Limit the use of pointers. Use no more than two levels of dereferencing per expressions.
10 Compile with all warnings enabled, and use one or more source code analyzers.
At least with languages where manual memory management is the way things are done, you can pre-allocate or statically all of your buffers and set upper bounds.
Not possible with GC languages, especially considering many GC language standard library functions/methods perform dynamic memory allocation internally.