Ho ereditato un certo codice:Process Builder waitFor() di emissione e di file Open limitazioni
Process p = new ProcessBuilder("/bin/chmod", "777", path).start();
p.waitFor();
In sostanza, non v'è per qualche motivo basato voodoo antica e fortemente per la memorizzazione di coppie chiave/valore su disco come file. Non voglio davvero entrarci.
Tuttavia, io sono rimasto con una serie di eccezioni IO:
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
E da un gruppo intendo nei regni di 10k - milioni
ho la sensazione della chiamata waitFor era fermare questi si verificano in attesa che il processo lo completi e si ritiri, tuttavia penso che chmod restituisca un risultato prima che il file sia effettivamente chiuso. Qualcuno sa se questa sarebbe la causa di queste eccezioni?
La mia altra inclinazione è che l'apertura e la chiusura di migliaia di file non sta accadendo abbastanza velocemente sul java e che c'è qualcos'altro che sta succedendo, forse qualcosa di simile c'è qualche forma di buffer di file che non è viene cancellato quando viene chiamato fw.close().
Sono piuttosto nuovo di java e questo è stato un inferno strano che mi ha lasciato perplesso. (volentieri l'app funziona ancora .. dopo aver sputato un file di registro molto grande)
Qualcun altro può pensare a un modo per aggirare questo problema, eliminare i buffer o aumentare il limite di apertura dei file a qualcosa in cui la jvm può tenere il passo con se stesso (supponendo che questo sia il problema)
Qual è il sistema operativo di destinazione (e la versione).Vedere questo: http://unix.derkeiler.com/Newsgroups/comp.unix.solaris/2007-02/msg00873.html –
debian, sembra essere cancellato da uname. sarà l'ultima stabile. – Louis