Hi Ahmar,
My recommendation on a previous post was about your exception (A connection to a distributed system already exists in this VM) which clearly indicates that you were accessing from the same machine, not a remote one. You have said:
Actually, a single war deployed on tomcat server contains both push code and pull code from Gemfire in two different java files with one configured as client and another as server.
Anyway, you can of course access and use GemFire with/from multiple machines acting as clients or peers in the same system. And by access, I mean also modify data if needed.
About the other questions:
2 - Yes, by increasing the JVM memory. Check this article for recommendations about GemFire sizing. GemFire Memory Sizing Guidelines
3 - Yes. Check the Topology Types section of Gemfire documentation.