# Beast et java.lang.OutOfMemoryError

**URL:** <https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361>\
**Category:** IFB Core Cluster\
**Created:** [Mai 2, 2025, 12:33 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361 "2025-05-02T12:33:14Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pierre-Michel](https://community.france-bioinformatique.fr/letter_avatar_proxy/v4/letter/p/94ad74/32.png) [@Pierre-Michel](https://community.france-bioinformatique.fr/u/Pierre-Michel)\
**Post date:** [Mai 2, 2025, 12:33 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361/1 "2025-05-02T12:33:14Z")

</div>

Bonjour,

J'essaye de faire tourner beast2 sur le cluster avec un gros fichier xml (2.3G). J'obtiens le message d'erreur "java.lang.OutOfMemoryError: Required array length 2147483639 + 18472458 is too large". J'ai voulu augmenter la mémoire de java, en suivant la documentation de Beast ([Increasing Memory Usage — this site is deprecated: goto https://www.beast2.org/ for up-to-date information | BEAST2](https://beast2.blogs.auckland.ac.nz/increasing-memory-usage/)) mais je ne trouve pas où est localisé le fichier beast.jar sur le cluster.

Y a-t-il un moyen pour augmenter la mémoire de beast sur le cluster ?

Bonne fin de semaine,

Pierre-Michel

---

<div class="post-metadata">

**Author:** ![dbenaben](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/dbenaben/32/43_2.png) [@dbenaben](https://community.france-bioinformatique.fr/u/dbenaben)\
**Post date:** [Mai 5, 2025, 11:28 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361/2 "2025-05-05T11:28:05Z")

</div>

Bonjour,

Sur l'IFB, `beast2` est encapsulé dans un container singularity.  
`beast` est un script (launcher) dans l'image qui va lui-même lancer la commande java qui va bien (`java [...] launcher.jar [...]`).  
Et malheureusement les paramètres tel que la mémoire de le VM java (`-Xmx...`) sont specifier en dur et non modifiable via des options.

Je vois propose donc de contourner le problème en lançant vous-même la commande java.  
La ligne de commande étant un peu longue, peut-être faire un alias, comme suit:

```auto
$ alias beast2='singularity exec /shared/ifbstor1/software/singularity/images/beast2-2.7.6.sif /usr/local/beast/jre/bin/java -Dlauncher.wait.for.exit=true -Xss256m -Xmx8g -Djava.library.path=/usr/local/beagle-lib/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/.singularity.d/libs:/usr/local/lib:/usr/local/beast/jre/lib/amd64 -Duser.language=en -cp /usr/local/beast/lib/launcher.jar beast.pkgmgmt.launcher.BeastLauncher'

$ beast2 -help
  Usage: beast [-window] [-options] [...]

```

Vous pouvez alors changer les valeurs mémoires alloués à java (par défaut: `-Xss256m` et `-Xmx8g`)

Dites-nous si ca fonctionne.

---

<div class="post-metadata">

**Author:** ![Pierre-Michel](https://community.france-bioinformatique.fr/letter_avatar_proxy/v4/letter/p/94ad74/32.png) [@Pierre-Michel](https://community.france-bioinformatique.fr/u/Pierre-Michel)\
**Post date:** [Mai 5, 2025, 1:16 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361/3 "2025-05-05T13:16:21Z")

</div>

> [@dbenaben](#):
>
> ```auto
> alias beast2='singularity exec /shared/ifbstor1/software/singularity/images/beast2-2.7.6.sif /usr/local/beast/jre/bin/java -Dlauncher.wait.for.exit=true -Xss256m -Xmx8g -Djava.library.path=/usr/local/beagle-lib/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/.singularity.d/libs:/usr/local/lib:/usr/local/beast/jre/lib/amd64 -Duser.language=en -cp /usr/local/beast/lib/launcher.jar beast.pkgmgmt.launcher.BeastLauncher'
> 
> ```

Bonjour,

Merci pour votre retour. J'ai fait l'alias mais quand j'exécute mon script avec sbatch (commande dans mon .sh : beast2 -beagle\_GPU -beagle\_order 1 mon\_fichier.xml), j'obtiens le message d'erreur suivant: /var/spool/slurm/slurmd/job46071651/slurm\_script: line 21: beast2: command not found

Pourtant, l'alias semble avoir bien fonctionné puisque la commande beast2 -help fonctionne dans le terminal... Quelque chose m'échappe...

Pierre-Michel

---

<div class="post-metadata">

**Author:** ![dbenaben](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/dbenaben/32/43_2.png) [@dbenaben](https://community.france-bioinformatique.fr/u/dbenaben)\
**Post date:** [Mai 5, 2025, 1:28 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361/4 "2025-05-05T13:28:13Z")

</div>

Il faut probablement refaire l'alias dans votre script.

En effet, lorsqu'on soumet un job, toutes les variables d'environnement sont potentiellement réinitialisé. Il faut donc charger les modules nécessaires et refaire l'alias dans le script.

---

<div class="post-metadata">

**Author:** ![Pierre-Michel](https://community.france-bioinformatique.fr/letter_avatar_proxy/v4/letter/p/94ad74/32.png) [@Pierre-Michel](https://community.france-bioinformatique.fr/u/Pierre-Michel)\
**Post date:** [Mai 5, 2025, 2:10 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361/5 "2025-05-05T14:10:32Z")

</div>

J'obtiens toujours le même message d'erreur (beast2 command not find), en mettant l'alias dans mon script... Est-ce normal que beast2 -help retourne "Usage: beast [...]", et non "Usage: beast2 [..]"?

---

<div class="post-metadata">

**Author:** ![dbenaben](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/dbenaben/32/43_2.png) [@dbenaben](https://community.france-bioinformatique.fr/u/dbenaben)\
**Post date:** [Mai 5, 2025, 2:18 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361/6 "2025-05-05T14:18:17Z")

</div>

`beast2` est le nom de l'alias (pas de l'utilitaire) donc le retour `beast` est normal.

Dans ce cas, essayer simplement en faisant appel à la commande complète (tout en changeant les paramètres mémoire) et en ajoutant les paramètres:

```bash
singularity exec /shared/ifbstor1/software/singularity/images/beast2-2.7.6.sif /usr/local/beast/jre/bin/java -Dlauncher.wait.for.exit=true -Xss256m -Xmx8g -Djava.library.path=/usr/local/beagle-lib/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/.singularity.d/libs:/usr/local/lib:/usr/local/beast/jre/lib/amd64 -Duser.language=en -cp /usr/local/beast/lib/launcher.jar beast.pkgmgmt.launcher.BeastLauncher

```

Ou via l’utilisation de variable:

```bash
$ BEAST='singularity exec /shared/ifbstor1/software/singularity/images/beast2-2.7.6.sif /usr/local/beast/jre/bin/java -Dlauncher.wait.for.exit=true -Xss256m -Xmx8g -Djava.library.path=/usr/local/beagle-lib/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/.singularity.d/libs:/usr/local/lib:/usr/local/beast/jre/lib/amd64 -Duser.language=en -cp /usr/local/beast/lib/launcher.jar beast.pkgmgmt.launcher.BeastLauncher'

$ ${BEAST} -help
  Usage: beast [-window] [-options] [...]

```

---

<div class="post-metadata">

**Author:** ![Pierre-Michel](https://community.france-bioinformatique.fr/letter_avatar_proxy/v4/letter/p/94ad74/32.png) [@Pierre-Michel](https://community.france-bioinformatique.fr/u/Pierre-Michel)\
**Post date:** [Mai 5, 2025, 3:09 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361/7 "2025-05-05T15:09:21Z")

</div>

Merci beaucoup, ça fonctionne sans l'allias. J'ai donc augmenté les options -Xss et -Xmx avec plusieurs valeurs mais j'obtiens toujours le message d'erreur java.lang.OutOfMemoryError: Required array length 2147483639 + 17106020 is too large...

---

<div class="post-metadata">

**Author:** ![dbenaben](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/dbenaben/32/43_2.png) [@dbenaben](https://community.france-bioinformatique.fr/u/dbenaben)\
**Post date:** [Mai 6, 2025, 7:04 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361/8 "2025-05-06T07:04:49Z")

</div>

P'têtre réessayer en doublant la mémoire alloué à java à chaque essai ?

---

<div class="post-metadata">

**Author:** ![Pierre-Michel](https://community.france-bioinformatique.fr/letter_avatar_proxy/v4/letter/p/94ad74/32.png) [@Pierre-Michel](https://community.france-bioinformatique.fr/u/Pierre-Michel)\
**Post date:** [Mai 6, 2025, 2:19 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361/9 "2025-05-06T14:19:10Z")

</div>

En fait je pense que j'avais trop d'isolats (96 avec un génome de 41Mb). J'ai réduit mon jeu de données et beast à fonctionné sans problème.

---

<div class="post-metadata">

**Author:** ![dbenaben](https://community.france-bioinformatique.fr/user_avatar/community.france-bioinformatique.fr/dbenaben/32/43_2.png) [@dbenaben](https://community.france-bioinformatique.fr/u/dbenaben)\
**Post date:** [Mai 6, 2025, 3:05 UTC](https://community.france-bioinformatique.fr/t/beast-et-java-lang-outofmemoryerror/6361/10 "2025-05-06T15:05:24Z")

</div>

Ca marche. Merci pour ce retour.
