Le Générateur de processus waitFor() question et Ouvrir le fichier limitations

J'ai hérité un peu de code:

Process p = new ProcessBuilder("/bin/chmod", "777", path).start();
p.waitFor();

Fondamentalement, il y a pour certains anciens et très vaudou basé raison pour stocker des paires clé/valeur sur le disque comme des fichiers. Je n'ai pas vraiment envie d'aller en elle.

Cependant, je suis parti avec un groupe de OI exceptions:

Exception :Cannot run program "/bin/chmod": java.io.IOException: error=24, Too many open files
Message: Cannot run program "/bin/chmod": java.io.IOException: error=24, Too many open files

Et par un groupe, je veux dire dans les domaines de 10k - des millions

J'ai l'impression que le waitFor appel a été d'arrêter de se produire en attente pour le processus de le terminer et quitter retour, cependant, je pense que le chmod est de retourner un résultat avant que le fichier est fermé. Personne ne sait si ce serait la cause de ces exceptions?

Mes autres inclinaison est que l'ouverture et la fermeture de milliers de fichiers ne se fait pas assez rapidement sur le java fin et qu'il y a autre chose, peut-être quelque chose comme ça, il y a une certaine forme de mémoire tampon de fichier qui n'est pas effacé lors de la fw.close() est appelée.

Je suis assez nouveau à java et cela a été un enfer bizarre, qui m'a déconcerté. (plaisir de l'application s'exécute toujours en quelque sorte.. après crachant un très gros fichier journal qui est)

Une autre personne peut penser à un moyen de contourner ce problème, la compensation des tampons ou l'augmentation de l'ouverture des fichiers limiter à quelque chose où la jvm peut rivaliser avec elle-même (en supposant que c'est le problème)

Quel est votre système d'exploitation (et version). Voir ceci: unix.derkeiler.com/Newsgroups/comp.unix.solaris/2007-02/...
debian, il semble être effacée de la commande uname. sera la dernière version stable.

OriginalL'auteur Louis | 2009-07-15