It might be also possible that the GarbageCollector run into trouble (this happen to our app, also no gracefull JBoss shutdown possible).
Do you activate the GC logging for JBoss?
Add something like this to run.conf Java parameter:
'-verbose:gc -Xloggc:${LOGDIR}/gc_`date +%Y%m%d%H%M%S`.log -XX:+PrintGCDetails -XX:+PrintTenuringDistri
bution -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCTimeStamps'
here you will see that 'Application time' is only a few millis and 'Time where application stopped' are seconds .... :(
for additional info look to http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html
if not active you might use 'jstat -gc PID 1000 1000' and check whether gc is called very often.
For infos about jstat lokk here http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstat.html
hope it helps