Mam serwer z systemem Solaris 10. Zgłasza ponad 70 GB wolnej pamięci RAM GiB. Próbuję uruchomić Tomcat 7.0.68 przy użyciu Java 1.7.0_80 w trybie 64-bitowym.
Serwer twierdzi, że nie jest w stanie przydzielić 717 MiB pamięci RAM. Za każdym razem, gdy próbuję, otrzymuję plik hs_err_pidxxx.log. Sugeruje to:
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 717225984 bytes for committing reserved memory.
# Possible reasons:
# The system is out of physical RAM or swap space
Nie. Dostępnych jest 70 GiB, próbuje przydzielić 700ish MiB.
# In 32 bit mode, the process size limit was hit
Jesteśmy w trybie 64-bitowym.
# Possible solutions:
# Reduce memory load on the system
Na tym komputerze nie ma nic poza systemem operacyjnym.
# Increase physical memory or swap space
Mamy już dwa rzędy wielkości więcej niż potrzeba.
# Check if swap backing store is full
Nie.
# Use 64 bit Java on a 64 bit OS
Gotowy.
# Decrease Java heap size (-Xmx/-Xms)
Zrobiłbym, gdybym mógł.
# Decrease number of Java threads
Jak to się robi?
# Decrease Java thread stack sizes (-Xss)
Sugerowane wartości? Jest to domyślnie, ale nie wiem, co to może poprawić.
# Set larger code cache with -XX:ReservedCodeCacheSize=
Ponownie jesteśmy domyślnie.
$ swap -s
total: 48607296k bytes allocated + 18201336k reserved = 66808632k used, 311770552k available
echo ::memstat | mdb -k
uruchamiane jako root?