<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>