Ho un dump dell'heap da 1 GB da un processo java che ha esaurito lo spazio heap. Ho caricato l'heap in jvisualm fornito con una distribuzione java6. Ho iniziato il processo di "calcolo delle dimensioni trattenute" circa 16 ore fa ed è ancora in esecuzione. Quanto tempo ci vuole per eseguire le dimensioni di calcolo conservate per i primi 20 oggetti su un heap da 1 GB? Devo aspettarmi che finisca mai?Per quanto tempo è necessario eseguire le dimensioni di calcolo conservate nella VM visiva per un heap da 1 GB?
risposta
Avevo un heap da 600 MB che richiedeva appena 900 CPU-minuti di tempo per calcolare le dimensioni mantenute. Sono 15 ore. Suppongo che sia molto correlato a cosa c'è nell'heap, quindi non estrapolerò il tuo heap (anche tu hai sottolineato che non è stato completato;), ma è un altro punto dati.
Sembra che ci voglia per sempre anche sulla mia macchina, ma ho notato dal task manager che nulla sembrava più accadere (poca CPU, Disk I/O). Il motivo era che sebbene l'indicatore di avanzamento continuasse a mostrare un'animazione, l'azione è stata interrotta in modo silenzioso in base al file di registro.
Per aprire il registro che ho usato come segue:
- Fare clic su Guida
- Clicca Chi
- Clicca Logfile
Questo mi ha mostrato alla fine del registro:
SEVERE [org.openide.util.RequestProcessor]
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.HashMap.newNode(HashMap.java:1734)
at java.util.HashMap.putVal(HashMap.java:630)
at java.util.HashMap.put(HashMap.java:611)
at java.util.HashSet.add(HashSet.java:219)
at org.netbeans.lib.profiler.heap.DominatorTree.intersect(DominatorTree.java:279)
at org.netbeans.lib.profiler.heap.DominatorTree.computeOneLevel(DominatorTree.java:114)
at org.netbeans.lib.profiler.heap.DominatorTree.computeDominators(DominatorTree.java:64)
at org.netbeans.lib.profiler.heap.HprofHeap.computeRetainedSize(HprofHeap.java:537)
at org.netbeans.lib.profiler.heap.HprofHeap.computeRetainedSizeByClass(HprofHeap.java:594)
at org.netbeans.lib.profiler.heap.ClassDump.getRetainedSizeByClass(ClassDump.java:102)
at org.netbeans.modules.profiler.heapwalk.HeapFragmentWalker.computeRetainedSizes(HeapFragmentWalker.java:100)
at org.netbeans.modules.profiler.heapwalk.ClassPresenterPanel$1$1.run(ClassPresenterPanel.java:187)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1393)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2003)
Per impostazione predefinita, il mio 64 bit Java VM Heapsize sarà limitato al 25% della memoria del mio computer (o anche a un limite predefinito VisualVM molto più basso). Per risolvere questo problema per il mio prossimo tentativo I wil provare di nuovo a partire VisualVM come questo:
jvisualvm.exe -J-Xmx16g
Dopo questo registro mostra all'avvio:
Heap memory usage: initial 24,0MB maximum 14563,6MB
Ho scoperto che jvisualvm stava ignorando il flag della riga di comando mx dalla riga di comando, poiché stava già inserendo un valore predefinito di -Xmx256m da% JDK_HOME% \ lib \ visualvm \ etc \ visualvm.conf. Vedi https://stackoverflow.com/questions/9570921/how-do-i-provide-jvm-arguments-to-visualvm –
- 1. Per quanto tempo vengono conservate le voci di LogCat?
- 2. MySQL: quanto tempo è necessario per creare un indice?
- 3. Quanto tempo è necessario approvare un'app per Amazon AppStore?
- 4. Quanto tempo impiega Glibc per compilare?
- 5. per quanto tempo dovrebbe essere necessario installare Xcode 7
- 6. Tempo di registrazione necessario per eseguire i test JUnit
- 7. FFmpeg: Come posso dividere un file MP4 da 100 GB in diversi file da 1 GB?
- 8. Per quanto tempo Facebook caching le miniature di condivisione?
- 9. Misurare il tempo necessario per eseguire una query t-sql
- 10. Riduzione della dimensione heap di un programma C++ dopo un calcolo di grandi dimensioni
- 11. È necessario il mutex per offset diversi nella memoria heap allocata
- 12. Carica file di grandi dimensioni (1 GB) -ASP.net
- 13. Quanto più veloce è un database in esecuzione nella RAM?
- 14. Dimensioni di heap di comprensione Android
- 15. Perché è così, più bit "1" nella mia chiave, più tempo è necessario inserire in HashMap?
- 16. C# Per quanto tempo l'utente era inattivo
- 17. Calcolare il tempo necessario per eseguire una determinata funzione
- 18. Quanto Java è necessario per utilizzare efficacemente Hadoop e Mahout?
- 19. Per quanto tempo un server XMPP può memorizzare messaggi offline
- 20. Calcolo dimensioni directory
- 21. Come posso eseguire il backup di un repository SVN da 13 GB? Il dump è 100+ GB
- 22. Quanti/per quanto tempo vengono salvati da git?
- 23. Quanto tempo ci vuole per fallire un'immagine?
- 24. Ordinamento heap 1-array?
- 25. Necessario per uscire da un HandlerThread?
- 26. Tempo di calcolo! =
- 27. Android Wear Per quanto tempo le voci DataMap restano valide
- 28. Perché è necessario specificare la dimensione heap Java?
- 29. Quanto tempo impiega un programma Python per l'esecuzione?
- 30. Implementazione di risultati MultiDex nella compilazione per così tanto tempo, e infine errore di heap spazio
Non ho idea di che cosa stai parlando (Ho poca esperienza con Java), ma la mia logica mi dice che se non stai eseguendo questo su 1 GHz con 1 GB di RAM (o meno) sistema, 16 ore sono mooolto troppo ... – ComputerSaysNo
Solo per curiosità, lo ha fatto finire? Quanto ci è voluto? Se non è stato completato, una seconda corsa è terminata correttamente? – uhm
Non è mai finito. Ho finito per scaricare una versione di prova di YourKit e ho completato la stessa procedura in circa 20 minuti. – Joe