java can crash.
The cause can be..
OutOfMemoryError
StackoverFlowError
OutOfMemoryError: PermGen space.
OutOfMemoryError
Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector.
StackoverFlowError
StackOverflowException is thrown for execution stack overflow errors, typically in case of a very deep or unbounded recursion.
OutOfMemoryError: PermGen space
The detail message PermGen space indicates that the permanent generation is full. The permanent generation is the area of the heap where class and method objects are stored. If an application loads a very large number of classes, then the size of the permanent generation might need to be increased using the -XX:MaxPermSize option.
The question was about memory problems that can cause a crash.
Other issues that can cause a crash, but can be caught by the program and recovered from posibilty
are any runtimeExceptions.
i.e.
ArithmeticException,
ArrayStoreException,
BufferOverflowException,
BufferUnderflowException,
CannotRedoException,
CannotUndoException,
ClassCastException, CMMException,
ConcurrentModificationException,
DOMException, EmptyStackException,
IllegalArgumentException,
IllegalMonitorStateException,
IllegalPathStateException,
IllegalStateException,
ImagingOpException,
IndexOutOfBoundsException,
MissingResourceException,
NegativeArraySizeException,
NoSuchElementException,
NullPointerException,
ProfileDataException,
ProviderException,
RasterFormatException,
SecurityException, SystemException,
UndeclaredThrowableException,
UnmodifiableSetException,
UnsupportedOperationException
I wont go into these here. but have a look at...
link text