2013-07-12 11 views
7

Sono fondamentalmente un amministratore di Weblogic e voglio simulare situazioni di memoria esaurita mediante l'implementazione di un codice Java molto semplice (file war/ear) nella mia istanza Weblogic.Esempio di codice Java per simulare l'esaurimento della memoria

Ho una conoscenza molto limitata della codifica Java, quindi qualcuno può fornirmi un codice di esempio che posso facilmente impacchettare come guerra e distribuire?

+2

Quale memoria? Mucchio? Pila? Cosa hai pensato finora che potrebbe funzionare? – m0skit0

+1

Avvia il server web con una dimensione massima dell'heap ridicolmente bassa? ;) – fge

+2

mentre apprezzo che questo ha così tanti upvotes, l'OP non ha fatto nessuno sforzo sulla domanda. – Woot4Moo

risposta

16

Questo dovrebbe essere sufficiente:

long[][] ary = new long[Integer.MAX_VALUE][Integer.MAX_VALUE]; 

Questo tenterà di allocare 2^31 + 1 blocchi di memoria, ciascuno di dimensione 2^34 byte.

+0

Grazie mille Marko – mak

5

È possibile eseguire final long[] l = new long[Integer.MAX_VALUE]; Assegnerà 16Gb - 8 byte.

Oppure si può semplicemente throw new OutOfMemoryError();

+2

I server di oggi potrebbero semplicemente stupirti con un blocco di 2^34 byte :) Ma il secondo suggerimento potrebbe essere sufficiente per la maggior parte dei casi. –

+0

+1 per la seconda soluzione; non può essere più diretto/semplice di così – arshajii

1

Per simulare la memoria viene consumata nel tempo prova:

List<long[]> list = new LinkedList<long[]>(); 
while (true) { 
    list.add(new long[65536]); // an arbitrary number 
    // sleep(1) perhaps? 
} 
+0

@MarkoTopolnik thx Marko, ho codificato troppo in C di recente, a quanto pare. – Dariusz

Problemi correlati