<html><body>Dobré odpoledne,<br>narazil jsem při Å™eÅ¡ení Ãºkolu ÄÃ­slo 3 na problém s vlákny. Při testování své banky a klientů, při použití více než dvou klientů záhy začnu obdržovat výjimky OutOfMemoryError, vždy při vytváření nějakého vlákna uvnitř ActiveMQ. Po chvíli už pak nejde spustit Å¾Ã¡dného nového klienta, ani Å¾Ã¡dnou jinou aplikaci v javě (např. eclipse) s následující, nebo podobnou hláškou:<br><br>Error occurred during initialization of VM<br>java.lang.OutOfMemoryError: unable to create new native thread<br>    at java.lang.Thread.start0(Native Method)<br>    at java.lang.Thread.start(Thread.java:640)<br>    at java.lang.ref.Reference.<clinit>(Reference.java:145)<br><br>Když ukončím některé klienty, tak se to zase vrátí do normálu, zkrátka to působí, jako Å¾e aplikace používá velké množství vláken, která navíc při běhu přibývají. To se mi potvrdilo, když jsem si příkazem "ps -eLf | grep java" nechal vypisovat vlákna JVM. S každým novým klientem se vytváří tak 30-50 vláken, ÄÃ¡stečně v brokeru, ÄÃ¡stečně v samotném klientovi. To se mi zdá straÅ¡ně moc. ZkouÅ¡el jsem stejný experiment i s Äistou implementací, kterou jsem si stáhnul z webu. Tam vlákna s novými klienty přibývají o něco méně, ale při spuÅ¡tění sedmého klienta už jsem obdržel hlášku výše.<br><br>A tak bych se chtěl zeptat, je něco divně u mě, nebo je prostě normální, Å¾e JMS potřebuje desítky vláken na každého klienta? Stejně tak jako to, Å¾e systém při zhruba 170 běžících vláknech JVM (celkem v systému jich je kolem 400) odmítne vytvářet další. Nebo je chyba někde jinde? (v poskytnuté implementaci banky a klientů, v nastavení ActiveMQ?). Přijde mi totiž, Å¾e framework, který zvládne max. pár klientů, by nebyl dvakrát užitečný.<br><br>Děkuji za reakce<br><br>Zbyněk Jiráček<br></body></html>