• "Is there a way to determine memory granted to query just before execution and the actual memory it used during runtime. Can we get this information from execution plans. "

    You can determine the memory to some degree. The actual plan will list the estimated row size, the estimated rows and the actual rows. From this you can calculate an estimated amount of memory used by the data returned.