0

Я запускаю какое-то веб-приложение на экземпляре Amazon из Java-банку, но у него всегда заканчивается память через 12 часов или около того. Вот сообщение об ошибке, которое записывается в файл:Jar работает на Amazon EC2 У экземпляра t2.micro заканчивается память

There is insufficient memory for the Java Runtime Environment to continue. 
Native memory allocation (malloc) failed to allocate 12288 bytes for        
committing reserved memory. 
Possible reasons: 
The system is out of physical RAM or swap space 
In 32 bit mode, the process size limit was hit 
Possible solutions: 
Reduce memory load on the system 
Increase physical memory or swap space 
Check if swap backi ng store is full 
Use 64 bit Java on a 64 bit OS 
Decrease Java heap size (-Xmx/-Xms) 
Decrease number of Java threads 
Decrease Java thread stack sizes (-Xss) 
Set larger code cache with -XX:ReservedCodeCacheSize= 
This output file may be truncated or incomplete. 

Out of Memory Error (os_linux.cpp:2827), pid=5808, tid=140367928600320 

JRE version: OpenJDK Runtime Environment (7.0_95) (build 1.7.0_95-b00) 
Java VM: OpenJDK 64-Bit Server VM (24.95-b01 mixed mode linux-amd64 compressed oops) 
Derivative: IcedTea 2.6.4 
Distribution: Ubuntu 14.04.3 LTS, package 7u95-2.6.4-0ubuntu0.14.04.1 
Failed to write core dump. Core dumps have been disabled. 
To enable core dumping, try "ulimit -c unlimited" before starting Java again 

Как это исходит? Будут ли следовать их предложениям, таким как увеличение размера кучи или пространства подкачки, или мне просто нужно обновить свой экземпляр EC2 до большего размера?

ответ

1

Проблема в том, что у вас закончилась либо виртуальная память, либо фактическое адресное пространство.

Это означает, что вы должны либо

  • увеличивают пространство подкачки
  • снижение размер кучи

Причина, по которой нужно уменьшить размер кучи, чтобы оставить больше памяти для остальная часть JVM и системы

1

Вам необходимо увеличить максимальную величину размера кучи JVM с помощью опции -Xmx, чтобы позволить JVM использовать больше памяти. Если вам нужно увеличить его за пределы того, что физически доступно на экземпляре t2.micro, вам также необходимо увеличить размер экземпляра EC2.

Имейте в виду, что вы не сможете выделить полную 1 ГБ памяти на экземпляр t2.micro для вашего приложения Java, поскольку некоторые из них будут использоваться операционной системой. Также вам нужно избегать использования пространства подкачки, если это вообще возможно, поэтому сосредоточьтесь на настройке вашей JVM, чтобы использовать RAM, доступную на экземпляре EC2.

Не зная, какие ваши текущие настройки JVM трудно дать более точные рекомендации.

+0

Хм .. но сообщение об ошибке рекомендует уменьшить размер кучи. –

+0

О, я вижу. Возможно, вы выделили больше памяти, чем на самом деле, на сервере. В любом случае вам необходимо предоставить текущие настройки JVM, если вы хотите получить более точную рекомендацию. –

+0

Как получить текущие настройки JVM? Нужно ли мне писать программу Java или я могу сделать это из командной строки? –

Смежные вопросы