title: Core Plot:Memory Issue Core animation failed to allocate so many bytes
body: <p>I am using core plot for generation various types of graphs using webservices.But after generating around 60 graphs the graph scren appears to be blank giving a message in the device log as "Core animation failed to allocate 9997432 bytes"
  we are facing this issue only on the device where as the app runs fine on simulator.</p>
  
  <p>The following is the code snippet,We are passing data to the below class from an another class.
  .h file</p>
  
  <pre><code>//
  //  LineGraph.h
  //  Graphs
  //
  //  Created by Pawan on 12/12/11.
  //  Copyright 2011 __MyCompanyName__. All rights reserved.
  //
  
  #import &lt;UIKit/UIKit.h&gt;
  #import "CorePlot-CocoaTouch.h"
  
  
  @interface LineGraph1 : UIViewController&lt;CPTPlotDataSource,UIPopoverControllerDelegate,CPTScatterPlotDelegate,CPTPlotSpaceDelegate&gt; {
  
      NSMutableArray *xAxisValuesArray;
      NSMutableArray *yAxisValuesArray;
      NSMutableArray *identifierArray;
      NSMutableArray *xAxisScaleArray;
      NSMutableArray *formattedDataLabelArray;
  
      NSString  *graphTitleLabel;
      NSString *lineType;
      NSString *xAxisTitleLabel;
      NSString *yAxisMin;
      NSString *yAxisMax;
      NSString *yAxisIntervalLength;
      NSString *yAxisTitle;
      NSString *yAxisTitleLocation;
      UILabel *valueLabel2;
  
  
      float xAxiscount;
      float intervalLength;
  
      @private
  
      CPTXYGraph *lineGraph;
      CPTMutableTextStyle *titleTextStyle;
      CPTLayerAnnotation   *symbolTextAnnotation;
  
      NSMutableArray *plotSymbolColoursArray;
      NSMutableArray *plotLineColoursArray;
  
      IBOutlet CPTGraphHostingView *lineGraphtView;
      IBOutlet UILabel *lineGraphLabel;
      IBOutlet UISlider *lineGraphValueSlider;
      IBOutlet UIButton *drillUpButton;
      IBOutlet UIButton *drillDownButton;
      IBOutlet UIButton *helpButton;
  }
  @property(nonatomic,retain) IBOutlet CPTGraphHostingView *lineGraphtView;
  @property(nonatomic,retain) CPTXYGraph *lineGraph;
  @property(nonatomic,retain) NSMutableArray *xAxisValuesArray;
  @property(nonatomic,retain) NSMutableArray *yAxisValuesArray;
  @property(nonatomic,retain) IBOutlet UILabel *lineGraphLabel;
  @property(nonatomic,retain) NSString *graphTitleLabel;
  @property(nonatomic,retain) NSString *lineType;
  @property(nonatomic,retain) NSString *xAxisTitleLabel;
  @property(nonatomic,retain) NSString *yAxisTitleLocation;
  @property(nonatomic,retain) NSString *yAxisMin;
  @property(nonatomic,retain) NSString *yAxisMax;
  @property(nonatomic,retain) NSString *yAxisIntervalLength;
  @property(nonatomic,retain) NSString *yAxisTitle;
  @property(nonatomic,retain) NSMutableArray *identifierArray;
  @property(nonatomic,retain) NSMutableArray *plotSymbolColoursArray;
  @property(nonatomic,retain) NSMutableArray *plotLineColoursArray;
  @property(nonatomic,retain) NSMutableArray *xAxisScaleArray;
  @property(nonatomic,retain) NSMutableArray *formattedDataLabelArray;
  @property(nonatomic,retain) CPTMutableTextStyle *titleTextStyle;
  
  - (void)constructLineGraphForSingleLineGraph:(NSString *)type;
  -(IBAction)helpButtonPressed:(id)sender;
  -(void)plotDataActionSlider:(id)sender;
  -(void)setplotDataActionSlider;
  
  @end
  
  
  
  .m file
  
  
  
  
  // LineGraph.m
  //  Graphs
  //
  //  Created by Pawan on 12/12/11.
  //  Copyright 2011 __MyCompanyName__. All rights reserved.
  //
  
  #import "LineGraph1.h"
  #import "CommonMethodForGraphs.h"
  #import "GraphDescription.h"
  
  @implementation LineGraph1
  
  @synthesize lineGraph;
  @synthesize xAxisValuesArray;
  @synthesize yAxisValuesArray;
  @synthesize graphTitleLabel;
  @synthesize lineGraphLabel;
  @synthesize lineType;
  @synthesize xAxisTitleLabel;
  @synthesize yAxisMin;
  @synthesize yAxisMax;
  @synthesize yAxisIntervalLength;
  @synthesize yAxisTitle;
  @synthesize yAxisTitleLocation;
  @synthesize identifierArray;
  @synthesize plotLineColoursArray;
  @synthesize plotSymbolColoursArray;
  @synthesize xAxisScaleArray;
  @synthesize formattedDataLabelArray;
  @synthesize titleTextStyle;
  @synthesize lineGraphtView;
  //Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
  
  
  - (void)viewDidLoad {
      [super viewDidLoad];
      [self setplotDataActionSlider]; 
      self.lineGraphLabel.text=self.graphTitleLabel;
      NSMutableArray *identifierLocalArray=[[NSMutableArray alloc]init];
  
      [identifierLocalArray insertObject:@"Port In" atIndex:0];
      self.identifierArray=identifierLocalArray;
      [identifierLocalArray release];
  
      NSMutableArray *plotSymbolColoursLocalArray =[NSMutableArray arrayWithObjects:[CPTColor redColor],[CPTColor greenColor],nil];
      NSMutableArray *plotLineColoursLocalArray =[NSMutableArray arrayWithObjects:[CPTColor greenColor],[CPTColor redColor],nil];
      self.plotSymbolColoursArray=plotSymbolColoursLocalArray;    
      self.plotLineColoursArray=plotLineColoursLocalArray;
  
      if ([self.xAxisValuesArray count]&lt;=10) 
      {
          xAxiscount = 10.0f;
      }
      else    
      {
          xAxiscount = 31.0f;
      }
  
      [self constructLineGraphForSingleLineGraph:self.lineType];
  
  }
  #pragma mark -
  #pragma mark constructLineGraphForSingleLineGraph
  
  
  
  - (void)constructLineGraphForSingleLineGraph:(NSString *)type
  {
  
      // Create lineGraph from theme
  
      CPTXYGraph *lineGraphLocalObject = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
      self.lineGraph = lineGraphLocalObject;
      [lineGraphLocalObject release];
      CPTTheme *theme = [CPTTheme themeNamed:kCPTPlainWhiteTheme];
      self.lineGraph = (CPTXYGraph *)[theme newGraph];
  
  /*  
      UIImage *image = [UIImage imageNamed:@"BackgroundforGraph.png"];
      CGImageRef mycgimage = [image CGImage];
      CPTImage *image1 = [CPTImage imageWithCGImage:mycgimage];
      self.lineGraph.fill=[CPTFill fillWithImage:image1];
      self.lineGraph.borderLineStyle = nil;
      image = [UIImage imageNamed:@"PlotAreaImageNew.png"];
      mycgimage = [image CGImage];
      image1 = [CPTImage imageWithCGImage:mycgimage];
  
      self.lineGraph.plotAreaFrame.fill = [CPTFill fillWithImage:image1];
   */
      lineGraphtView.hostedGraph = self.lineGraph;
      lineGraphtView.allowPinchScaling = NO;
      self.lineGraph.plotAreaFrame.masksToBorder = NO;
      //padding for plot area
      self.lineGraph.paddingLeft = 110.0;
      self.lineGraph.paddingTop = 20.0;
      self.lineGraph.paddingRight = 10.0;
      self.lineGraph.paddingBottom = 100.0;
  
      // Add plot space for line graph
      CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.lineGraph.defaultPlotSpace;
      plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromString(self.yAxisMin) length:CPTDecimalFromString(self.yAxisMax)];
      plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(xAxiscount)];
  
      CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.lineGraph.axisSet;
  
      CPTXYAxis *x = axisSet.xAxis;
      x.majorIntervalLength = CPTDecimalFromString(@"1");
      x.orthogonalCoordinateDecimal = CPTDecimalFromString(self.yAxisMin);
      x.title =self.xAxisTitleLabel;
      x.titleLocation = CPTDecimalFromFloat(5.0f);
      x.titleOffset = 65.0f;
      x.labelOffset=0.0f;
  
      //text style initialized for both x and y axis....
      CPTMutableTextStyle *titleTextStyleLocalObject = [[CPTMutableTextStyle alloc] init];
      self.titleTextStyle = titleTextStyleLocalObject;
      [titleTextStyleLocalObject release];
      self.titleTextStyle.fontSize = 15;
      x.titleTextStyle =  self.titleTextStyle;
      self.titleTextStyle.fontSize = 12;
      x.labelTextStyle = self.titleTextStyle;
  
      // Define some custom labels for the data elements
      x.labelRotation = M_PI/4;
      x.labelingPolicy = CPTAxisLabelingPolicyNone;
      int labelLocation = 0;
      NSMutableArray *customLabelsForXaxis = [NSMutableArray arrayWithCapacity:[self.xAxisScaleArray count]];
  
      for (NSNumber *tickLocation in self.xAxisScaleArray) 
      {
          CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText: [self.xAxisScaleArray objectAtIndex:labelLocation++] textStyle:x.labelTextStyle];
          newLabel.tickLocation = [[NSNumber numberWithInt:labelLocation] decimalValue] ;//[tickLocation decimalValue];
          newLabel.offset =0.0;
          newLabel.rotation = M_PI/4;
  
          [customLabelsForXaxis addObject:newLabel];
          [newLabel release];
      }
  
      x.axisLabels =  [NSSet setWithArray:customLabelsForXaxis];  
  
      NSNumberFormatter *yAxisFormat = [[NSNumberFormatter alloc] init];
      [yAxisFormat setNumberStyle:NSNumberFormatterNoStyle];
      CPTXYAxis *y = axisSet.yAxis;
      y.axisLineStyle = nil;
      y.majorIntervalLength = CPTDecimalFromString(self.yAxisIntervalLength);
      y.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0"); 
      y.titleOffset = 50.0f;
      y.titleLocation = CPTDecimalFromString(self.yAxisTitleLocation);
      y.labelOffset = 0.0f;
      y.labelFormatter=yAxisFormat;
      [yAxisFormat release];
      y.title = self.yAxisTitle;
      y.labelTextStyle =  self.titleTextStyle;
  
      CPTScatterPlot *dataSourceLinePlot = [[[CPTScatterPlot alloc] init] autorelease];
      dataSourceLinePlot.identifier = [self.identifierArray objectAtIndex:0];
  
      CPTMutableLineStyle *lineStyle = [[dataSourceLinePlot.dataLineStyle mutableCopy] autorelease];
      lineStyle.lineWidth = 2.0f;
      lineStyle.lineColor = [ self.plotLineColoursArray objectAtIndex:0];//[CPTColor clearColor];for scatterplot
      dataSourceLinePlot.dataLineStyle = lineStyle;
      dataSourceLinePlot.labelOffset=8.0f;
      dataSourceLinePlot.dataSource = self;
      dataSourceLinePlot.delegate = self;
  
          // Add plot symbols
  
      CPTPlotSymbol *plotSymbol = [CPTPlotSymbol ellipsePlotSymbol];
      plotSymbol.fill = [CPTFill fillWithColor:[  self.plotSymbolColoursArray objectAtIndex:0]];
      plotSymbol.size = CGSizeMake(10.0, 10.0);
      dataSourceLinePlot.plotSymbol = plotSymbol;
  
  
  
      // Put an area gradient under the plot above
      CPTColor *areaColor = [CPTColor colorWithComponentRed:0.3 green:0.8 blue:0.3 alpha:0.6];
      CPTGradient *areaGradient = [CPTGradient gradientWithBeginningColor:areaColor endingColor:[CPTColor clearColor]];
      areaGradient.angle = -90.0;
      CPTFill* areaGradientFill = [CPTFill fillWithGradient:areaGradient];
      dataSourceLinePlot.areaFill = areaGradientFill;
      dataSourceLinePlot.areaBaseValue = CPTDecimalFromString(@"0.0");
  
  
  
      [self.lineGraph addPlot:dataSourceLinePlot];
      y.labelingPolicy = CPTAxisLabelingPolicyNone;
      intervalLength = [CommonMethodForGraphs formattedIntervalLengthForgraph:self.yAxisIntervalLength];
  
  
      double j=[self.yAxisMin intValue];
      NSMutableArray *customTickLocationsForYaxis = [[NSMutableArray alloc]init];
      NSMutableArray *yAxisLabels =[[NSMutableArray alloc]init];
  
      for (int h=0; h&lt;=10; h++) 
      {
          [customTickLocationsForYaxis insertObject:[NSDecimalNumber numberWithLongLong:j] atIndex:h];
          [yAxisLabels insertObject:[[NSNumber numberWithLongLong:j/intervalLength]stringValue] atIndex:h];
          j=j+[self.yAxisIntervalLength longLongValue];
      }
      labelLocation = 0;
      NSMutableArray *customLabelsForYaxis = [[NSMutableArray alloc] initWithCapacity:[yAxisLabels count]];
  
      for (NSNumber *tickLocationForYaxis in customTickLocationsForYaxis)
      {
          CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText: [yAxisLabels objectAtIndex:labelLocation++] textStyle:x.labelTextStyle];
          newLabel.tickLocation = [tickLocationForYaxis decimalValue];
          newLabel.offset = y.labelOffset + y.majorTickLength;
          [customLabelsForYaxis addObject:newLabel];
          [newLabel release];
      }
  
      y.axisLabels =  [NSSet setWithArray:customLabelsForYaxis];
  
      [customLabelsForYaxis release];
      [customTickLocationsForYaxis release];
      [yAxisLabels release];
  
  }
  
  
  #pragma mark -
  #pragma mark delegates for Line graph 
  
  -(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot 
  {
      int recordCount = 0;
  
      for (int i=0; i&lt;[self.identifierArray count]; i++) 
      {
          if ( [plot.identifier isEqual:[self.identifierArray objectAtIndex:i] ]) 
          {
              recordCount= [self.yAxisValuesArray count];
          }
  
      }
      return recordCount; 
  }
  
  -(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index 
  {
      NSNumber *num = nil;
  
      if( [plot.identifier isEqual:[self.identifierArray objectAtIndex:0] ]) 
      {
          switch (fieldEnum) 
          {
              case CPTScatterPlotFieldX:
                  num = [self.xAxisValuesArray objectAtIndex:index];
                  break;
  
              case CPTScatterPlotFieldY:
                  num = [self.yAxisValuesArray objectAtIndex:index];
                  break;
          }
  
      }
  
      return num;
  }
  
  
  -(CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index
  {
  
      static CPTMutableTextStyle *whiteText = nil;
  
      if ( !whiteText) 
      {
          whiteText = [[CPTMutableTextStyle alloc] init];
          whiteText.color = [CPTColor blackColor];
          whiteText.fontSize=12.0f;
      }
  
      CPTTextLayer *newLayer = nil;
      if (index%2==0) 
      {
          plot.labelOffset=-0.5;
  
      }
      else 
      {
          plot.labelOffset=0.5;
      }
  
  
      if ( [plot.identifier isEqual:[self.identifierArray objectAtIndex:0]])
      {
          newLayer = [[[CPTTextLayer alloc] initWithText:[NSString stringWithFormat:@"%.1f%",[[self.formattedDataLabelArray objectAtIndex:index]floatValue]] style:whiteText] autorelease];
          [whiteText release];
      }
  
      return newLayer;
  
  }
  
  -(void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index
  {
  
      if ( symbolTextAnnotation ) {
          [self.lineGraph.plotAreaFrame.plotArea removeAnnotation:symbolTextAnnotation];
          symbolTextAnnotation = nil;
      }
  
      // Setup a style for the annotation
      CPTMutableTextStyle *hitAnnotationTextStyle = [CPTMutableTextStyle textStyle];
      hitAnnotationTextStyle.color = [CPTColor redColor];
      hitAnnotationTextStyle.fontSize = 16.0f;
      hitAnnotationTextStyle.fontName = @"Helvetica-Bold";
  
      // Determine point of symbol in plot coordinates
      NSNumber *x = [self.xAxisValuesArray objectAtIndex:index];
  
      NSString *y = [self.yAxisValuesArray objectAtIndex:index];
  
      NSArray *anchorPoint = [NSArray arrayWithObjects:x, y, nil];
  
  
  
      // Now add the annotation to the plot area
      CPTTextLayer *textLayer = [[[CPTTextLayer alloc] initWithText:y style:hitAnnotationTextStyle] autorelease];
  
      symbolTextAnnotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:self.lineGraph.defaultPlotSpace anchorPlotPoint:anchorPoint];
  
      symbolTextAnnotation.contentLayer = textLayer;
      symbolTextAnnotation.displacement = CGPointMake(0.0f, 20.0f);
      [self.lineGraph.plotAreaFrame.plotArea addAnnotation:symbolTextAnnotation]; 
      [textLayer release];
      [symbolTextAnnotation release];
  }
  
  #pragma mark -
  #pragma mark method for slider action
  
  
  -(void)plotDataActionSlider:(id)sender
  {
  
  
      if (lineGraphValueSlider.value&lt;=[self.yAxisValuesArray count]+1) 
      {
              //code to remove added imageView
              [[self.view viewWithTag:50] removeFromSuperview];
              //code to remove added label
              [[self.view viewWithTag:100] removeFromSuperview];
          for (int d=0; d&lt;[self.yAxisValuesArray count]; d++) 
          {
              if ((int)lineGraphValueSlider.value==[[self.xAxisValuesArray objectAtIndex:d]intValue]) 
              {
  
  
  
                  int x=300;
                  valueLabel2=[[UILabel alloc]init];
                  valueLabel2.frame=CGRectMake(x, 620, 300, 40);
                  valueLabel2.tag=100;
                  NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
                  [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
                  NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
                  [formatter setLocale:locale];
                  valueLabel2.text= [[[self.xAxisScaleArray objectAtIndex:d] stringByAppendingString:@" : "] stringByAppendingString:[formatter stringFromNumber:[NSNumber numberWithLongLong:[[self.yAxisValuesArray objectAtIndex:d]longLongValue]]]];
                  [self.view addSubview:valueLabel2];
                  [valueLabel2 release];
                  [formatter release];
  
              }
          }
      }
      else 
      {
          [[self.view viewWithTag:50] removeFromSuperview];
          [[self.view viewWithTag:100] removeFromSuperview];
  
      }
  
  
  
  }
  
  -(void)setplotDataActionSlider
  {
      UIImage *minImage = [UIImage imageNamed:@"SliderRoll.png"];
      UIImage *tumbImage= [UIImage imageNamed:@"SliderArrow.png"];   
      minImage=[minImage stretchableImageWithLeftCapWidth:0 topCapHeight:0];
          // Setup the  slider
      [lineGraphValueSlider setMinimumTrackImage:minImage forState:UIControlStateNormal];
      [lineGraphValueSlider setThumbImage:tumbImage forState:UIControlStateNormal];
      lineGraphValueSlider.minimumValue = 0.0;
  
      if ([self.xAxisValuesArray count]&lt;=10)
      {
          lineGraphValueSlider.maximumValue = 10.0;
      }
      else 
      {
          lineGraphValueSlider.maximumValue = 31.0;
      }
  
  
      lineGraphValueSlider.continuous = YES;
      [lineGraphValueSlider addTarget:self action:@selector(plotDataActionSlider :) forControlEvents:UIControlEventValueChanged];
  
      minImage = nil;
      tumbImage = nil;
  
  
  }   
  
  #pragma mark -
  #pragma mark method for help drill up and drill down
  
  -(IBAction)helpButtonPressed:(id)sender{
      [CommonMethodForGraphs helpButtonActionForAllGraphs:self.view];
  
  
  }
  #pragma mark -
  
  //Override to allow orientations other than the default portrait orientation.
  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
      // Return YES for supported orientations.
      return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||(interfaceOrientation == UIInterfaceOrientationLandscapeRight));
  }
  
  
  - (void)didReceiveMemoryWarning {
      // Releases the view if it doesn't have a superview.
      [super didReceiveMemoryWarning];
  
      // Release any cached data, images, etc. that aren't in use.
  }
  
  - (void)viewDidUnload {
      [super viewDidUnload];
  
      // Release any retained subviews of the main view.
      // e.g. self.myOutlet = nil;
      self.lineGraphLabel = nil;
      self.lineGraphtView = nil;
  }
  
  
  - (void)dealloc {
  
      [lineGraph release];
      [xAxisValuesArray release];
      [yAxisValuesArray release];
      [xAxisTitleLabel release];  
      [graphTitleLabel release];
      [lineGraphLabel release];
      [lineType release];
      [yAxisMin release];
      [yAxisMax release];
      [yAxisIntervalLength release];
      [yAxisTitle release];
      [yAxisTitleLocation release];
      [identifierArray release];
      [plotLineColoursArray release];
      [plotSymbolColoursArray release];
      [xAxisScaleArray release];
      [formattedDataLabelArray release];
      [lineGraphtView release];
      [super dealloc];
  
  }
  
  
  
  @end
  </code></pre>