Desktop productivity for business analysts and programmers

EG 4.3 System.OutOfMemoryException: When loading a plot report

Reply
Contributor
Posts: 65

EG 4.3 System.OutOfMemoryException: When loading a plot report

Hey guys,

Found a new kinky thing with EG 4.3, when plotting 20 separate charts with around 2000 datapoints per each one and 3 variables, so total 20 charts with 3 variables in each one with 2000 datapoints each. The loading time is big, then it says the results are big ( 8 megs) do you want to add them? I say yes,

proc gplot runs fine, and when i click on the report to see the graphs, this pops up

Exception of type 'System.OutOfMemoryException' was thrown.

------------------------------ Technical Information Follows ------------------------------

System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at SAS.Report.Models.XML.XMLIQData.XMLValue.LoadElement(ReportElement parent)
at SAS.Report.Models.XML.XMLReportElement.LoadSubelement(String name, XmlNode node, XMLReportElement xmlClass, ReportElement parent)
at SAS.Report.Models.XML.XMLReportElement.LoadSubelements(String name, XMLReportElement xmlClass, ReportElement parent)
at SAS.Report.Models.XML.XMLIQData.XMLValuesList.LoadElement(ReportElement parent)
at SAS.Report.Models.XML.XMLReportElement.LoadSubelement(String name, XmlNode node, XMLReportElement xmlClass, ReportElement parent)
at SAS.Report.Models.XML.XMLReportElement.LoadSubelements(String name, XMLReportElement xmlClass, ReportElement parent)
at SAS.Report.Models.XML.XMLIQData.XMLEmbeddedData.LoadElement(ReportElement parent)
at SAS.Report.Models.XML.XMLReportElement.LoadSubelement(String name, XmlNode node, XMLReportElement xmlClass, ReportElement parent)
at SAS.Report.Models.XML.XMLReportElement.LoadSubelement(String name, XMLReportElement xmlClass, ReportElement parent)
at SAS.Report.Models.XML.XMLIQData.LoadElement(ReportElement parent)
at SAS.Report.Models.XML.XMLReportElement.LoadSubelement(String name, XmlNode node, XMLReportElement xmlClass, ReportElement parent)
at SAS.Report.Models.XML.XMLData.LoadElement(ReportElement parent)
at SAS.Report.Models.XML.XMLReportElement.LoadSubelement(String name, XmlNode node, XMLReportElement xmlClass, ReportElement parent)
at SAS.Report.Models.XML.XMLReportElement.LoadSubelements(String name, XMLReportElement xmlClass, ReportElement parent)
at SAS.Report.Models.XML.XMLSASReport.LoadElement(ReportElement parent)
at SAS.Report.Models.XML.XMLParse.CreateDOM(Stream file, String fragment, Hashtable customObjectMap)
at SAS.Report.Models.XML.XML.ReadReport(Stream inputStream, Hashtable customObjectMap)
at SAS.Report.Models.XML.XML.ReadReport(FileInfo file, Hashtable customObjectMap, String prefixUniqueId)
at SAS.Report.Models.XML.XML.ReadReport(String filename, Hashtable customObjectMap, String uniqueIdPrefix)
at SAS.Report.Viewer.SASReportView.ReadReport(String reportFileName, String uniqueIdPrefix)
at SAS.Report.Viewer.SASReportView.ReadReport(String reportFileName)
at SAS.EG.ProjectElementViews.SasReportView.OpenDocument()

------------------------------ End of Technical Information ------------------------------



memory imprint of EG never goes above 1.1 gb with 6gb total mem, commit and total/available mem are within limits, eg is the largest thing running. I've done bigger things before like rolling corrs with appendings which create really big datafiles. I really dont want to route this through tech support cause i've already spent 1.5 months in january with them, although she was really superb. Don't have that time Smiley Sad

Thanks!!!

Arsenio
Community Manager
Posts: 2,889

Re: EG 4.3 System.OutOfMemoryException: When loading a plot report

The default output device for graphs is ActiveX, which generates verbose script when creating HTML, SAS Report, or RTF output. The more data points, the larger the files.

Try changing your Graph type to PNG, which will generate static graphics files that are a consistent file size.

Tools->Results->Graph: Graph Format.

Chris
Contributor
Posts: 65

Re: EG 4.3 System.OutOfMemoryException: When loading a plot report

Chris,

Thanks a lot for the answer! What are the mem limits for EG 4.3 or why there should be an error if there is enough available RAM? Can it multithread or use several cores or use over 3 gb of RAM on a 64 Win machine? Or should i get SAS for win 64? Sorry for too many questions.

I restarted the machine and reran EG 4.3 now it could display those graphs.

Thanks!
Community Manager
Posts: 2,889

Re: EG 4.3 System.OutOfMemoryException: When loading a plot report

The memory limits depend on your system, but are also constrained by the fact that EG is a 32-bit application.

I'll tell you though: if your results contain THAT large of a file due to so many charts (with lots of data points), even if they load without a memory error, they will not likely be usable in a practical way. For each chart that uses ActiveX, the EG report renderer (for SAS Report) or your Web browser (for HTML) must create an instance of a graph control, which then must render the chart. It's much faster/easier with the PNG static charts.

SAS for x64 won't help you to manage large results, because EG is still a 32-bit app. But I advise you to try to optimize your results (to be smaller in file size) rather than try to push the limits of your system unnecessarily. I believe that you can do this without losing fidelity in the results.

As far as multithreading: EG is multithreaded in the way that it communicates with a SAS process and does work while keeping the UI responsive. However, a single EG session will run on just one core. You can have multiple EG sessions though.

SAS.exe is also multithreaded, and with SAS/CONNECT and SAS Grid technology you can have single SAS job that runs across multiple cores. See http://support.sas.com/rnd/scalability for more.

Chris
Ask a Question
Discussion stats
  • 3 replies
  • 1732 views
  • 0 likes
  • 2 in conversation