Closed Bug 887929 Opened 12 years ago Closed 8 years ago

GC: decommit unused chunks in the background

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: terrence, Unassigned)

References

(Blocks 1 open bug)

Details

(Whiteboard: [MemShrink:P3][js4b2g])

Currently, when a Chunk becomes empty, it gets added to a list of free chunks and only freed if it does not get re-used within the next two GC's. On memory constrained systems such as android and B2G, keeping this memory alive and committed can result in OOM through C allocations that cannot use our GC heap. We should simply decommit any chunks that are waiting in this list so that their backing physical memory can be re-used by other allocations in the system. This should be a less costly, but more complex, solution to the problem that Bug 887652 also solves.
Whiteboard: [MemShrink]
Whiteboard: [MemShrink] → [MemShrink][js4b2g]
Whiteboard: [MemShrink][js4b2g] → [MemShrink:P3][js4b2g]
Blocks: GC.size
Assignee: general → nobody
This happened either when we moved everything to ChunkPool or during the decommit-on-the-background: I don't remember. In any case, we assert that it is true in every GC: http://searchfox.org/mozilla-central/rev/064025c802c22cd5ad122746733cbd34ea47393c/js/src/jsgc.cpp#3117-3119
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.