Updates:
        Owner: [email protected]
        Labels: Type-FeatureRequest Priority-Low

Comment #1 on issue 847 by [email protected]: 1gb memory limit
http://code.google.com/p/v8/issues/detail?id=847

There two independent issues we need to solve to support large heaps:

1) Currently V8 uses int variables/fields to track various limits inside memory management subsystem. Limits overflow when heap size approaches 1gb and this causes erratic behavior [e.g. Heap::old_gen_allocation_limit_ overflow forces V8 always to select mark-sweep collector instead of scavenge].

Semantically correct fix for this would be to replace int with size_t in appropriate places. Unfortunately this requires serious refactoring of V8 source code because currently it consistently uses int to store sizes of various objects and changing some of this declarations to use size_t will cause to numerous "signed compared to unsigned", "signed stored to unsigned" errors.

2) MarkCompactCollector and MemoryAllocator use encodings based on assertion that number of chunks constituting paged part of the heap does not exceed certain value and each chunk consists of limited number of pages of limited size [see comments for Page::opaque_header and MapWord class]. One needs to rewrite these parts of GC/allocator to raise heap limits.

An independent problem is GC throughput: while current V8 GC behaves well on small and medium heaps [and especially on applications that satisfy generational hypothesis] it's performance could degrade on large heaps. For example on 1.5Gb heap one should expect mark-sweep taking > 1 s, mark-compact taking > 3s and scavenge taking >50ms. Such pauses might significantly degrade overall application performance and responsiveness.



--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to