Ho bisogno di testare alcuni script di monitoraggio JMX che ho sviluppato, In particolare, vorrei verificare che il mio monitoraggio della regione PermGen funzioni. Quindi, per testare questo mi piacerebbe essere in grado di eseguire un po 'di codice che carica un numero significativo di classi al fine di consumare PermGen.Riempire programmaticamente l'area di memoria JVM Permanent Generation (PermGen)
Il mio piano attuale è quello di scrivere uno script per generare prefix(1..n).java
loro compilare e poi al momento giusto run:
for(int i=1 ; i < n ; i ++){
Class.forName("com.mypackage.prefix"+i);
}
C'è una soluzione più elegante per raggiungere questo obiettivo?
Penso che se si crea un'istanza di un nuovo ClassLoader e caricare la stessa classe più e più volte, sarà raggiungere il tuo obiettivo, senza la necessità di creare tonnellate di classi diverse. In alternativa, penso che String.intern() possa anche riempire il tuo spazio PermGen –
@Guillaume: questa è una risposta, non un commento! –
@ Tom, sì e no perché non ne sono sicuro, quindi questo è più un suggerimento. Non voglio sembrare affermativo su questo. ;-) –