Un errore come quello indica l'esaurimento della memoria disponibile. Due casi tipici in cui cio' puo' accadere sono:
una chiamata ricorsiva mal gestita
un ciclo infinito.

Per fare quello che dici tu devi sapere a priori quanti alunni hai, e creare un array con il numero di elementi esatto. In alternativa potresti utilizzare un oggetto Vector che lavora in modo simile all'array, ma che non ti pone limiti sul numero degli elementi. La seconda possibilita' e' preferibile, secondo me.

Crea una classe Studente che accetta come parametro del costruttore il File che deve leggere, l'oggetto studente apre il file e memorizza il proprio nome e la propria media.
A quel punto, per ottenere la media generale, fai un ciclo che scorre tutto l'array (o il Vector) e sommi i valori delle medie di tutti gli studenti, alla fine dividi per il numero di studenti totali, che poi e' rappresentato dal valore dell'indice del ciclo, all'uscita di esso.