Bonjours à tout le monde ,
J'ai un petit problème :
Je suis en cours de réalisation d'un programme qui enregistre du son, jusque ici pas sorcier.
Mais une petite question me trotte en tête : quand j'enregistre mon son (grâce à JAVA SOUND , TargetDataLine ...) , je stocke mes octets dans une list pour la capture et au moment ou l'utilisateur à fini son enregistrement, j'utilise AudioImputStream avec ma list pour sauvegarder le tout dans un fichier . Le truc c'est que si l'utilisateur veux enregistrer disons 24h de son (pour exagérer) ma list sera énorme car elle contiendra tout les octets (si j'échantillonne en 44100Hz sa me fera 44100 valeurs par seconde je vous laisse imaginer pour 24h). Je vais donc avoir un souci de mémoire avec le heap si je ne dit pas de bêtise non ?
J'aurai ce message d'erreur : java.lang.OutOfMemoryError: Java Heap space
Et on vois nettement la place que les attributs de mes threads grâce au logiciel Java VisualVM.
Comment faire alors ? Je pense qu'il faut que je créer un fichier wav au fur et à mesure pour ne garder en mémoire vive qu'une seconde de son par exemple mon heap sera donc beaucoup moins charger mais je ne sais pas si cela est possible et si c'est la bonne solution ?
Merci d'avance pour votre opinion
Partager