2012-11-07 10 views
8

Attualmente sto lavorando ad un fantastico gioco per Android che stava per essere rilasciato molto presto. Alcuni dei nostri beta tester hanno iniziato a lamentarsi del fatto che il gioco si blocca con il messaggio di errore "troppi file aperti". Ho provato a simulare questo problema sull'emulatore AVD ma non ho potuto riprodurre l'errore.Qualcuno può confermare questo problema (numero limitato di descrittori di file su alcuni dispositivi Android)?

In seguito, mi sono reso conto che solo il nostro Galaxy S3 e Asus Nexus 7 tester si lamentavano. Ho trovato this bug issue sul bug tracker di Android e suona abbastanza simile a quello che mi sta succedendo.

Questo suona come un grave problema di un'architettura che effettua tutti i dispositivi SD card interni. Questi dispositivi sono limitati a solo 1024 descrittori di file! Qualcuno può confermare questo problema?

+0

Quanti file aperto funziona il vostro programma ha? –

+0

Quanti file ha aperto la tua applicazione e quanta memoria hanno preso.! La dimensione dei file potrebbe aumentare a partire dalla memoria interna del dispositivo.! –

risposta

5

In realtà non è rilevante sapere se questa applicazione sta aprendo un sacco di file o meno. Cosa c'è di preoccupante è che l'intero dispositivo è limitata a 1024 file aperti. Prendi ad esempio un dispositivo Galaxy S3 che esegue 100 app ciascuna aprendo 10 file contemporaneamente (proprietà, database e simili). Questo è estremamente vicino al limite.

Se si seleziona la massima apertura file limite (/ proc/sys/fs/file-max) sulla maggior parte dei dispositivi è ben più di 50K.

+1

Dubito che 100 applicazioni potrebbero essere in esecuzione in qualsiasi momento, 10 anche. Non è un grosso problema se si considera che la memoria è limitata, le app vengono rapidamente uccise o sospese, dove dovrebbero fare attenzione a riordinare. – Guykun

+0

È vero, ma potrebbe ancora succedere. I nuovi dispositivi come il nexus4 sono dotati di 2GB di RAM. Quello è un computer. Può facilmente eseguire 100 app. – alechko

+1

@alechko: 100 processi è probabilmente ancora un po 'alto, data la dimensione dell'heap per processo. Tuttavia, il tuo punto è ancora valido: un gruppo di app con un sacco di file aperti potrebbe consumare tutti i descrittori di file. – CommonsWare

Problemi correlati