JabRef / jabref

Graphical Java application for managing BibTeX and biblatex (.bib) databases
https://devdocs.jabref.org
MIT License
3.63k stars 2.59k forks source link

Meta-issue: Improve JabRef's performance - Reduce CPU / RAM usage, increase speed and detect bottlenecks #8906

Open ThiloteE opened 2 years ago

ThiloteE commented 2 years ago

This meta-issue is here to provide a starting point for anybody who wants to work on performance issues and point them to related literature and utilities. It also keeps track of certain bugs related to performance degradation.

I would ask you to NOT START A DISCUSSION here. Comments may be hidden that do not add to the tools and documentation section.


JabRef's performance problems:

Solution

Tools and documentation:

How to test:


How to create a large database:

  1. Install Python3. E.g., via https://www.python.org/downloads/
  2. Download https://github.com/JabRef/jabref/blob/main/scripts/bib-file-generator.py
  3. Open terminal
  4. cd into your Download directory
  5. Run python3 bib-file-generator.py
HoussemNasri commented 1 day ago

Running heap dump analysis using jxray provided some interesting insights into JabRef's memory usage. The most interesting for me was that we have ~138MB of off-heap memory allocated (still don't know how and when it gets allocated) and many duplicated SimpleStringProperty and SimpleBooleanProperty objects around ~40MB of overhead.

It also discovered some memory leak candidates:

jabref-xray-heap-analysis.zip