Re: [rvm-research] Pre-Tenuring
Shoaib Akram <[email protected]> Fri, 10 Aug 2018 21:58:11 +0200
| Newsgroups | gmane.comp.java.jikes.rvm.devel |
|---|---|
| Message-ID | <[email protected]> |
Thanks for clarifications. Objects in LOS are only collected during a full-heap GC in my case so I took the liberty of calling them pre-tenured. You are right that one can have logical generations in a non-moving heap region, and pre-tenuring would mean something else. About copying *which* objects, I meant that while the mutator is pre-tenuring objects of type T in the immix mature space, all other (small) object that survive a minor GC are copied to the same immix space (where mutator is allocated type T objects). And based on the failure logs, it seems the fault happens during the copying of a nursery survivor to the immix mature space. I could try to create a 2nd immix space to allocate all object of type T. But in theory, mutator and GC can allocate (and promote) objects to the same space. I have an allocator per GC and Mutator. It should (and must) work out of the box ;) Yes, an object of type T can be large. But in Jikes, the mutator performs a size-check at runtime, and during this check, if the object is larger than a threshold, the allocator picked during compile-time is overruled, and replaced with the large object allocator. Thanks, Shoaib > On Aug 10, 2018, at 9:42 PM, Eliot Moss <[email protected]> wrote: > > On 8/10/2018 3:19 PM, Shoaib Akram wrote: >> There is one large object space. Objects larger than a threshold are pre-tenured to the large object space as in all default generational collectors. That is perfectly fine! > > LOS is not necessarily a *mature* space. It is different in that objects allocated there are > never moved. However, I believe that they can *logically* progress from being "nursery" to > being "mature". The notion of generations can be orthogonal to whether a space is moving or > non-moving. > >> Small objects go to the nursery, with the exception that, objects of type T go to the mature (immix) space. Note that in default generational collectors, there is no such pre-tenuring. This is my modification. > > Yes, that seems right - it is what pre-tenuring means. > >> Pre-tenuring objects of type T creates the problem. >> What I am guessing is that when the GC tries to copy objects from nursery to immix mature space, that creates a problem. > > Copy *which* objects? Pre-tenured objects should not be in the nursery. They should be allocated > directly into mature space. Now it is possible that the nursery collector is not expecting that > any objects will have been allocated into mature space since the last collection, and direct > allocation in mature space confuses it. However, I would expect the mature space allocator to > have been designed such that this is not a problem. > >> I am not new to Jikes and have a list of steps that I can follow to get to the root of this. But being in an emergency, I wanted some quick tips in case some one has tried similar things ;) >> Sorry for possibly missing more details. > > I think someone more familiar with the specific code will need to help further. > > Can an object of type T be large, i.e., allocated into LOS? If so, I am not sure > what behavior that might lead to. > > I am hoping that Steve Blackburn or other MMTk experts will pick up the thread and > help you out on this ... > > Bst - EM > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Jikesrvm-researchers mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot