czwartek, 20 maja 2010

Screencast -Grails Tomcat Netbeans 6.8 szukanie memory leak w aplikacji.

od dłuższego czasu trapi mnie wyciek pamięci w aplikacji grailsowej, którego nie mogłem zlokalizować:/ ostatnio Dariusz Cieślak w komentarzu podał mi linka do Java Memory Profiler (JMP) , ale jakoś nie udało mi się go pod mackiem uruchomić (nie chciało mi się bawić, ze ścieżkami :/). Postanowiłem więc uruchomić Tomcata jako serwer i podpiąć się pod niego przez Netabeans profilerem, jak to wyszło można zobaczyć tutaj:

Podczas prezentacji pojawiły się jakieś wyjątki w konsoli i to pomogło mi wykryć wycieki :)
  1. SEVERE: A web application registered the JBDC driver [org.hsqldb.jdbcDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.  
  2. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  3. SEVERE: A web application appears to have started a thread named [quartzScheduler_Worker-1] but has failed to stop it. This is very likely to create a memory leak.  
  4. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  5. SEVERE: A web application appears to have started a thread named [quartzScheduler_Worker-2] but has failed to stop it. This is very likely to create a memory leak.  
  6. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  7. SEVERE: A web application appears to have started a thread named [quartzScheduler_Worker-3] but has failed to stop it. This is very likely to create a memory leak.  
  8. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  9. SEVERE: A web application appears to have started a thread named [quartzScheduler_Worker-4] but has failed to stop it. This is very likely to create a memory leak.  
  10. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  11. SEVERE: A web application appears to have started a thread named [quartzScheduler_Worker-5] but has failed to stop it. This is very likely to create a memory leak.  
  12. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  13. SEVERE: A web application appears to have started a thread named [quartzScheduler_Worker-6] but has failed to stop it. This is very likely to create a memory leak.  
  14. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  15. SEVERE: A web application appears to have started a thread named [quartzScheduler_Worker-7] but has failed to stop it. This is very likely to create a memory leak.  
  16. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  17. SEVERE: A web application appears to have started a thread named [quartzScheduler_Worker-8] but has failed to stop it. This is very likely to create a memory leak.  
  18. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  19. SEVERE: A web application appears to have started a thread named [quartzScheduler_Worker-9] but has failed to stop it. This is very likely to create a memory leak.  
  20. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
  21. SEVERE: A web application appears to have started a thread named [quartzScheduler_Worker-10] but has failed to stop it. This is very likely to create a memory leak.  
  22. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap  
  23. SEVERE: A web application created a ThreadLocal with key of type [null] (value [org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory$2@55dd7f]) and a value of type [java.lang.Boolean] (value [false]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.  
  24. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap  
  25. SEVERE: A web application created a ThreadLocal with key of type [org.codehaus.groovy.reflection.ClassInfo.ThreadLocalMapHandler] (value [org.codehaus.groovy.reflection.ClassInfo$ThreadLocalMapHandler@3127f6]) and a value of type [java.lang.ref.SoftReference] (value [java.lang.ref.SoftReference@d5d9cc]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.  
  26. 2010-05-20 16:06:28 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap  
  27. SEVERE: A web application created a ThreadLocal with key of type [org.codehaus.groovy.runtime.GroovyCategorySupport.MyThreadLocal] (value [org.codehaus.groovy.runtime.GroovyCategorySupport$MyThreadLocal@6e98d7]) and a value of type [java.lang.ref.SoftReference] (value [java.lang.ref.SoftReference@f46e5a]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.  
  28. log4j:ERROR LogMananger.repositorySelector was null likely due to error in class reloading, using NOPLoggerRepository.  

I co się okazało, że po przejśćiu na nowszą wersję grailsów jedna z wtyczek a dokładnie quartz nie była odpowiednia do wersji grailsów. No więc spędziłem trochę czasu z profilerem, a rozwiązanie polegało na zmianie numeru wersji wtyczki, ale bez tych logów było by cieżko, a co dziwne sam tomcat w normalnym trybie tego nie logował:/

poniedziałek, 17 maja 2010

15. Spotkanie Śląskiej Grupy Użytkowników Technologii Java - Silesia JUG


TERMIN PRELEKCJI ZMIENIONY NA 25.05.2010
Śląska Grupa Użytkowników Technologii Java (Silesia JUG) serdecznie zaprasza wszystkich na piętnaste spotkanie, które odbędzie się 18.05.2010(25.05.2010) o godzinie 18:00 w COIG
(Centralny Ośrodek Informatyki Górnictwa S.A.) w sali 136 na pierwszym piętrze, ul.Mikołowska 100 w Katowicach.

Temat: GWT + Spring z wykorzystaniem architektury MVP i wzorca Command do komunikacji klient - serwer
Prowadzący: Michał Sędzielewski

Wstęp:

GWT to zbiór narzędzi pozwalających web developerom na tworzenie i utrzymywanie zaawansowanych aplikacji Javascript pisanych w Java.


Celem prezentacji będzie zaprezentowanie wykorzystania wzorca MVP do stworzenia testowalnej i łatwo rozszerzalnej aplikacji w oparciu o GWT, Spring Framework oraz Google Gin.

Michał Sędzielewski - student 4 roku Makrokierunku, Wydział AEI Politechniki Śląskiej, Software Developer w firmie Future Processing.

Po prezentacji (1,5h) odbędzie się krótka pogawędka (15 - 30 minut). Po prezentacji pytania dla obecnych, gdzie będzie można wygrać:
a. IntelliJ IDEA Personal License
b. ReSharper Personal License
c. TeamCity Build Agent
d. Ruby IDE Personal License

Wstęp wolny!

Zapraszam wszystkich w imieniu Michała i Silesia JUG

piątek, 14 maja 2010

Tomcat - Diagnostics - Web application has caused a memory leak

Dzisiaj po załadowaniu aplikacji grailsowej do Tomcata, z ciekawośći postanowiłem kliknąć w konsoli managera (http://192.168.0.99:8080/manager/html/) w sekcji "Diagnostics" -> "Find leaks"


ku mojemu zaskoczeniu dostałem coś takiego w "Message":

The following web applications were stopped (reloaded, undeployed), but their
classes from previous runs are still loaded in memory, thus causing a memory
leak (use a profiler to confirm): 
/SimpleProject

i niestety jestem teraz w kropce:/ może ktoś zna jakiś dobry profiler do grailsów, bądź jakiś inny sposób na znalezienie odpowiedzi co jest nie tak ?