1) It would help to reduce the number of GWT RPC calls on application screen launch by combining the data they fetch. Multiple RPC calls on load tend to block up lot of resource on browser and on server.
2) Analyze whether you need all the data your RPC calls are fetching first up.
3) The heap space usage varies depending on server side technology you are using Hibernate, Dozer, Gilead, lazy/cache loading etc.
4) Code Splitting and Fragment Merge help you reduce your app javascript which you load first up.
I am guessing you are using Dozer to copy hibernate entities to DTO/beans of client side. Try playing around with hibernate C3P0 connection pool settings.