2015-03-19 1 views
0

J'étudie certaines défaillances de tests unitaires. Les tests transmettent un ancien serveur de construction qui a été configuré manuellement (et non documenté). J'essaie de les exécuter dans une machine virtuelle propre.Puis-je obtenir les "processus utilisateur max" de Linux en Java?

Mon dernier problème est un test unitaire qui crée des threads 10K.

for (int i = 0; i < 10000; i++) { 
    final Thread thread = new Thread(new Runnable() { ... }); 
    threads.add(thread); 
    thread.start(); 
} 

Eh bien, les processus utilisateur max dans l'environnement propre sont seulement 4K. Je me demandais si Java pouvait atteindre cette limite. Le test n'a vraiment pas besoin de 10K, il a juste besoin d'un nombre arbitrairement grand.

Répondre

1

Vous pouvez appeler directement ulimit:

Runtime.getRuntime().exec(command)

+0

Oh, c'est intéressant ... pas multi-plateforme sur son propre (nous avons devs Win et Linux ici), mais un début. –

+0

Notez également que vous devrez exécuter bash avec les options appropriées (il y a probablement d'autres exemples sur SO), car ulimit n'est pas un exécutable autonome – spudone

+1

Les limites de thread Windows sont ... compliquées. Cela dépend de la version et du 32 ou 64 bits, entre autres choses. Je ne connais pas d'ulimit simple. Voir ici: http://blogs.technet.com/b/markrussinovich/archive/2009/07/08/3261309.aspx – spudone