RAM for a Java app is consumed by more than just heap (RAM usage for the heap will never exceed 2048MB in your case).
See this for a list of everything that can use up RAM:
http://www.coderanch.com/t/111262/Linux-UNIX/read-memory-usage-process-running#560894
How many threads are running? Have the number of threads increased? If so, that could account for the additonal RAM usage.