Stuff in Druntime That Generates Garbage
A preview of revamped gchunt tool.
Always curious to see what kind of garbage the druntime may generate.
Module | Artifact | Reason | Possible Fix(es) |
---|---|---|---|
src.core.demangle | append | setting 'length' may cause GC allocation 1 | |
src.core.demangle | decodeDmdString | operator ~= may cause GC allocation 1 2 3 | |
src.core.demangle | doDemangle | setting 'length' may cause GC allocation 1 2 | |
src.core.demangle | error | 'new' causes GC allocation 1 | |
src.core.demangle | mangle.numToString | setting 'length' may cause GC allocation 1 | |
src.core.demangle | parseValue | array literal may cause GC allocation 1 2 | |
src.core.exception | onAssertError | 'new' causes GC allocation 1 | |
src.core.exception | onAssertErrorMsg | 'new' causes GC allocation 1 | |
src.core.exception | onFinalizeError | 'new' causes GC allocation 1 | |
src.core.exception | onHiddenFuncError | 'new' causes GC allocation 1 | |
src.core.exception | onRangeError | 'new' causes GC allocation 1 | |
src.core.exception | onSwitchError | 'new' causes GC allocation 1 | |
src.core.exception | onUnicodeError | 'new' causes GC allocation 1 | |
src.core.exception | this | operator ~ may cause GC allocation 1 | |
src.core.exception | toString | operator ~ may cause GC allocation 1 | |
src.core.internal.traits | **** | operator ~ may cause GC allocation; | |
src.core.runtime | fixline | 'new' causes GC allocation 1 | |
src.core.runtime | toString | operator ~ may cause GC allocation; | |
src.core.sync.barrier | **** | 'new' causes GC allocation 1 2 | |
src.core.sync.condition | Condition.this | 'new' causes GC allocation 1 | |
src.core.sync.condition | notify | 'new' causes GC allocation 1 | |
src.core.sync.condition | notifyAll | 'new' causes GC allocation 1 | |
src.core.sync.condition | wait | 'new' causes GC allocation 1 2 | |
src.core.sync.mutex | lock_impl | 'new' causes GC allocation 1 | |
src.core.sync.mutex | this | 'new' causes GC allocation 1 2 3 | |
src.core.sync.mutex | unlock_impl | 'new' causes GC allocation 1 | |
src.core.sync.rwmutex | ReadWriteMutex.this | 'new' causes GC allocation 1 2 3 4 5 6 7 8 | |
src.core.sync.semaphore | Semaphore.this | 'new' causes GC allocation 1 | |
src.core.sync.semaphore | notify | 'new' causes GC allocation 1 | |
src.core.sync.semaphore | tryWait | 'new' causes GC allocation 1 | |
src.core.sync.semaphore | wait | 'new' causes GC allocation 1 2 | |
src.core.thread | ThreadGroup.add | indexing an associative array may cause GC allocation 1 | |
src.core.thread | ThreadGroup.create | 'new' causes GC allocation;
indexing an associative array may cause GC allocation 1 2 3 4 |
|
src.core.thread | allocStack | 'new' causes GC allocation 1 2 | |
src.core.thread | getAll | 'new' causes GC allocation 1 | |
src.core.thread | join | 'new' causes GC allocation 1 | |
src.core.thread | priority | 'new' causes GC allocation 1 2 | |
src.core.thread | sleep | 'new' causes GC allocation 1 | |
src.core.thread | start | 'new' causes GC allocation 1 2 3 4 5 | |
src.core.thread | thread_attachThis | 'new' causes GC allocation 1 | |
src.core.time | _enforceValid | 'new' causes GC allocation 1 | |
src.core.time | _toStringImpl | 'new' causes GC allocation; | |
src.core.time | _toStringImpl.appListSep | operator ~= may cause GC allocation 1 2 | |
src.core.time | _toStringImpl.appUnitVal | operator ~ may cause GC allocation;
operator ~= may cause GC allocation 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
src.core.time | numToString | operator ~ may cause GC allocation 1 | |
src.core.time | split.split.genMemberDecls | operator ~= may cause GC allocation 1 2 3 | |
src.core.time | split.split.genSplitCall | operator ~= may cause GC allocation 1 2 3 4 | |
src.core.time | toString | operator ~ may cause GC allocation 1 | |
src.core.time | unitsAreInDescendingOrder | array literal may cause GC allocation 1 | |
src.etc.linux.memoryerror | sigsegvUserspaceProcess | 'new' causes GC allocation 1 2 | |
src.gc.gc | GC.removeRange | using closure causes GC allocation 1 | |
src.gc.gc | GC.removeRoot | using closure causes GC allocation 1 | |
src.object_ | Object.opCmp | 'new' causes GC allocation; | |
src.object_ | _dup | operator ~= may cause GC allocation 1 | |
src.object_ | _xopCmp | 'new' causes GC allocation 1 | |
src.object_ | _xopEquals | 'new' causes GC allocation 1 | |
src.object_ | postblit | operator ~ may cause GC allocation 1 | |
src.object_ | swap | 'new' causes GC allocation; | |
src.object_ | toString | operator ~ may cause GC allocation;
operator ~= may cause GC allocation 1 2 3 4 5 6 7 8 9 10 11 12 |
|
src.rt.aaA | _d_assocarrayliteralTX | 'new' causes GC allocation 1 2 | |
src.rt.aaA | aligntsize | 'new' causes GC allocation 1 | |
src.rt.arraycast | _d_arraycast | 'new' causes GC allocation 1 | |
src.rt.cover | _d_cover_register2 | operator ~= may cause GC allocation 1 | |
src.rt.cover | addExt | operator ~ may cause GC allocation; | |
src.rt.cover | appendFN | operator ~= may cause GC allocation 1 2 | |
src.rt.cover | baseName | operator ~= may cause GC allocation 1 2 | |
src.rt.cover | expandTabs | operator ~= may cause GC allocation; | |
src.rt.cover | readFile | 'new' causes GC allocation; | |
src.rt.cover | splitLines | operator ~= may cause GC allocation; | |
src.rt.cover | this | 'new' causes GC allocation 1 2 3 4 | |
src.rt.minfo | sortCtors.sort | 'new' causes GC allocation; | |
src.rt.util.array | _enforceNoOverlap | 'new' causes GC allocation; | |
src.rt.util.array | _enforceSameLength | 'new' causes GC allocation; | |
src.rt.util.utf | encode | operator ~= may cause GC allocation 1 2 3 4 5 | |
src.rt.util.utf | toUTF16 | operator ~= may cause GC allocation; | |
src.rt.util.utf | toUTF16z | operator ~= may cause GC allocation; | |
src.rt.util.utf | toUTF32 | setting 'length' may cause GC allocation 1 2 | |
src.rt.util.utf | toUTF8 | setting 'length' may cause GC allocation 1 2 3 4 |