David Matthews wrote:
Philip Clayton wrote:
When using SaveState.saveChild to save the state, I am getting:
Timing - parse:0.0, semantics:0.0, translate:0.0, generate:0.0,
run:43.7
Exception SysErr: SysErr ("Out of Memory", SOME ENOMEM) raised
Even after shareCommonData and fullGC I notice that
objSize rootFunction
returns
Timing - parse:0.0, semantics:0.0, translate:0.0, generate:0.0,
run:63.4
val it = 218901122 : int
which is considerably larger than the 1382064 that is returned in a
fresh poly session.
It is my understanding that the upper limit on the size of a state is
determined by the resources available on a machine. Before looking
into a 64 bit OS with more addressable memory etc. I wondered if it
is possible to tell from the above values whether I am just trying to
save something infeasibly large?
Phil,
Bearing in mind that the number returned is the number of words not
the number of bytes then I would say that you have a problem on a
32-bit system. saveState needs to allocate enough memory on top of
the existing heap to copy all the reachable data so it's quite
possible that there is insufficient space. Have you checked whether
you have reached the limit set by ulimit (ulimit -d) or the available
swap space?
Would you expect such a large size? Is this something you've run
before? It may be worth trying PolyML.objProfile to print the numbers
of objects of various sizes to see whether it's what you would expect
given the data structures you have.
David,
ulimit -d was already set to unlimited. This isn't something that we've
ever managed to process before and the large size is certainly to be
expected. We are processing automatically generated files and there are
many known inefficiencies that are causing them to be more verbose than
necessary. I was just checking in the hope that we could quickly get a
particular example to work without having to address the underlying
efficiency issues just yet.
Thanks,
Phil
The information contained in this E-Mail and any subsequent
correspondence is private and is intended solely for the intended
recipient(s). The information in this communication may be
confidential and/or legally privileged. Nothing in this e-mail is
intended to conclude a contract on behalf of QinetiQ or make QinetiQ
subject to any other legally binding commitments, unless the e-mail
contains an express statement to the contrary or incorporates a formal Purchase Order.
For those other than the recipient any disclosure, copying,
distribution, or any action taken or omitted to be taken in reliance
on such information is prohibited and may be unlawful.
Emails and other electronic communication with QinetiQ may be
monitored and recorded for business purposes including security, audit
and archival purposes. Any response to this email indicates consent
to this.
Telephone calls to QinetiQ may be monitored or recorded for quality
control, security and other business purposes.
QinetiQ Limited
Registered in England & Wales: Company Number:3796233
Registered office: 85 Buckingham Gate, London SW1E 6PD, United Kingdom
Trading address: Cody Technology Park, Cody Building, Ively Road, Farnborough, Hampshire, GU14 0LX, United Kingdom
http://www.qinetiq.com/home/notices/legal.html
_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml