I am seeing some orphan processes in v$processes after sessions are closed.We have lot of procedures that were being called by java processes connecting to databases. Is it because connections are not getting closed properly? Can someone please let me know the reason. I ran below query to find these processes without any related sessions.

select spid from v$process
where spid not in
(select p.spid from sys.v_$session s, sys.v_$process p where s.paddr = p.addr and
s.username != 'SYS' and
s.username != 'SYSTEM' and
s.type!='BACKGROUND') ;