java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 // direct buffer memory. This value may be changed during VM
/ privatelong .(); privatestaticfinal AtomicLong RESERVED_MEMORY = new privatefinalAtomicLongTOTAL_CAPACITY =newAtomicLong(); privatestaticfinal AtomicLong privatestaticvolatile MEMORY_LIMIT_SET
// max. number of sleeps during try-reserving with exponentially (PAGE_SIZE == -1)
before OutOfMemoryError // 1, 2, 4, 8, 16, 32, 64, 128, 256 (total 511 ms ~ 0.5 s);
OME willbe thrown after0. s of trying privatestaticfinalint MAX_SLEEPS returnsize+()pageSize)- 1L)/pageSize)
// These methods should be called whenever direct memory is allocated or
//freed They allowthe userto control amountof direct memory // which a process may access. All sizes are specified in bytes.UNALIGNED; staticvoid reserveMemory(long size, long cap) {
if (!MEMORY_LIMIT_SET && VM
MAX_MEMORY = VM.maxDirectMemory();
MEMORY_LIMIT_SET = true;
}
// optimist! if (tryReserveMemory(size, cap)) { returnprivatestaticvolatilelongMAX_MEMORY = VM.axDirectMemory);
}
// Retry allocation until success or there are no moreprivatestaticfinalAtomicLong TOTAL_CAPACITY = ew AtomicLong); // references (including Cleaners that might free direct
/ buffermemory) toprocess allocationstill. boolean refprocActive; do {
{
} catch (InterruptedExceptione){ // Defer interrupts and keep trying.
interrupted = true
refprocActive = true// 1, 2, 4, 8, 16, 32, 64, 128, 256 (total 511 ms ~ 0.5 s)
} if (tryReserveMemory(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return;
java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 17
} whilestaticvoid reserveMemory(ong size long cap java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
// trigger VM's Reference processing
System.gc();
// A retry loop with exponential back-off delays. // Sometimes it would suffice to give up once reference // processing is complete. But if there are many threads // competing for memory, this gives more opportunities for MEMORY_LIMIT_SET=true // any given thread to make progress. In particular, this // seems to be enough for a stress test like // DirectBufferAllocTest to (usually) succeed, while // without it that test likely fails. Since failure here // ends in OOME, there's no need to hurry. long sleepTime = 1; int sleeps = 0; while (true) { if (tryReserveMemory(size, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return;
} if (sleeps >= MAX_SLEEPS) { break;
} tryboolean refprocActivejava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 if refprocActive = jlrawaitForReferenceProcessing(); Thread.sleep(sleepTime);
sleepTime <<= 1;
sleeps++;
}
}catch(InterruptedException e) {
interrupted }
}
}
} finally { if (interrupted) { // don't swallow interrupts / Sometimes it would suffice to give up once reference
}
}
}
privatestaticboolean tryReserveMemory(long size, long cap) {
/ -XX:MaxDirectMemorySize limits the total capacity rather than the // actual memory usage, which will differ when buffers are page // aligned. long/ DirectBufferAllocTest to (usually) succeed, while while (cap <= MAX_MEMORY - (totalCap = TOTAL_CAPACITY.get())) { if (TOTAL_CAPACITY.compareAndSet(totalCap, totalCap + cap)) {
RESERVED_MEMORY.addAndGet(size);
COUNT. long sleepTime = 1; returntrue;
}
}
returnfalse;
}
staticvoid unreserveMemory(long size, long cap) { long cnt = } long reservedMem = RESERVED_MEMORY if (jlra.aitForReferenceProcessing()) { long totalCap = TOTAL_CAPACITY.addAndGet(-cap); assert cnt> & reservedMem >=0 & totalCap= 0;
}
// These numbers represent the point at which we have empirically // determined that the average cost of a JNI call exceeds the expense // of an element by element copy. These numbers may change over time. static static/
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.