I managed to resolve the issue myself. Want to mention the changes I done, hoping that it might save time of others who face the same issue.
This is what was happening in my case:
The GPS was giving the points on frequent basis and my code was drawing the points on sketch layer. All this execution was happening on a single thread. After drawing each point to the sketchLayer, the point is removed from memory (atleast my code does that). My observation is that the memory is not flushed instantly but added to the autorelease pool and which gets flushed at the end of the thread. so in my case until I ask the location manager to give me points, the thread was busy collecting the points and drawing to the sketch layer.
Fix:
In order to draw the points to the sketch layer, I was iterating through the array of points received from location manager. I have introduced a autorelease pool in the array, thus each iteration would create a new pool and flush at the end of the iteration. This way my issue was resolved and it is not an issue of Sketch/graphic layer but my bad implementation :( However I am happy I learnt my mistake and corrected it :)
code snippet:
pendingLocations is locations array from "- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations"
for (CLLocation *loc in pendingLocations)
{
@autoreleasepool
{
//Do the drawing on sketch layer
}
}