Недостаточно памяти для запуска среды выполнения Java для продолжения - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть система с 4 ГБ оперативной памяти с ОС Windows.Я установил VMWare, чтобы настроить виртуальную машину Ubuntu с 2 ГБ ОЗУ.В Ubuntu я открыл Eclipse и начал кодировать, и Eclipse начал закрываться снова и снова, и я начал получать следующую ошибку:

 There is insufficient memory for the Java Runtime Environment to continue.     Native memory allocation (mmap) failed to map 28311552 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 backing 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:2640), pid=4608, tid=0x6dc6eb40

 JRE version: Java(TM) SE Runtime Environment (8.0_161-b12) (build 1.8.0_161-b12)
 Java VM: Java HotSpot(TM) Client VM (25.161-b12 mixed mode linux-x86 )
 Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again


---------------  T H R E A D  ---------------

Current thread (0x099ab400):  VMThread [stack: 0x6dbee000,0x6dc6f000] [id=4629]

Stack: [0x6dbee000,0x6dc6f000],  sp=0x6dc6d240,  free space=508k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x5bffaf]  VMError::report_and_die()+0x16f
V  [libjvm.so+0x20e115]  report_vm_out_of_memory(char const*, int, unsigned int, VMErrorType, char const*)+0x55
V  [libjvm.so+0x4a2686]  os::Linux::commit_memory_impl(char*, unsigned int, bool)+0xe6
V  [libjvm.so+0x4a2afd]  os::pd_commit_memory_or_exit(char*, unsigned int, unsigned int, bool, char const*)+0x2d
V  [libjvm.so+0x49c660]  os::commit_memory_or_exit(char*, unsigned int, unsigned int, bool, char const*)+0x30
V  [libjvm.so+0x2741ad]  G1PageBasedVirtualSpace::commit_internal(unsigned int, unsigned int)+0x9d
V  [libjvm.so+0x27440c]  G1PageBasedVirtualSpace::commit(unsigned int, unsigned int)+0xfc
V  [libjvm.so+0x276a68]  G1RegionsLargerThanCommitSizeMapper::commit_regions(unsigned int, unsigned int)+0x28
V  [libjvm.so+0x2bc2ba]  HeapRegionManager::commit_regions(unsigned int, unsigned int)+0x5a
V  [libjvm.so+0x2bd343]  HeapRegionManager::make_regions_available(unsigned int, unsigned int)+0x23
V  [libjvm.so+0x2bd851]  HeapRegionManager::expand_by(unsigned int)+0xa1
V  [libjvm.so+0x250a7c]  G1CollectedHeap::expand(unsigned int)+0x11c
V  [libjvm.so+0x25b3fa]  G1CollectedHeap::do_collection_pause_at_safepoint(double)+0xd5a
V  [libjvm.so+0x5cbafe]  VM_G1IncCollectionPause::doit()+0x6e
V  [libjvm.so+0x5caad7]  VM_Operation::evaluate()+0x47
V  [libjvm.so+0x5c8ba3]  VMThread::evaluate_operation(VM_Operation*)+0xb3
V  [libjvm.so+0x5c8f40]  VMThread::loop()+0x1b0
V  [libjvm.so+0x5c93a5]  VMThread::run()+0x85
V  [libjvm.so+0x4a5219]  java_start(Thread*)+0x119
C  [libpthread.so.0+0x6295]  start_thread+0xe5

VM_Operation (0xbfbfede0): G1IncCollectionPause, mode: safepoint, requested by thread 0x0988f800

--------------  P R O C E S S  ---------------

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Виртуальной машине Java не хватает памяти .

Есть несколько возможностей, которые вы могли бы сделать.На мой взгляд, следующие возможности являются наиболее перспективными, если вы хотите сохранить текущие ограничения для процесса:

  • Уменьшение Размер кучи Java (-Xmx / -Xms):
    В eclipse.ini, вероятно, есть строка типа -Xmx1024m, которую можно заменить, например, -Xmx640m.Попробуйте, какое максимальное пространство кучи все еще достаточно для ваших нужд.Убедитесь, что -Xms не больше -Xmx.
  • Если и только если у вас есть 64-битная система, вы можете использовать Eclipse 64-bit и Eclipse OpenJ9 вместо 32-битной Eclipse и 32-битной виртуальной машины Java HotSpot , которую вы используете в настоящее время.По умолчанию OpenJ9 более эффективен с точки зрения потребления памяти и может быть дополнительно настроен в этом отношении.

Возможность Use 64 bit Java on a 64 bit OS представляется здесь неправильно, поскольку 64-битная Java VMможет адресовать больше памяти, но менее эффективно использовать память, чем эквивалентная 32-битная виртуальная машина.

0 голосов
/ 15 сентября 2018

У вас слишком мало памяти для затмения.Лучше всего обновить вашу систему с большим количеством оперативной памяти.

Если у вас нет веских причин не использовать затмение непосредственно под окнами без использования виртуальной коробки.Если вам необходимо использовать Ubuntu, рассмотрите возможность использования 32-разрядной версии Ubuntu и Java и eclipse, или установите Ubuntu рядом с Windows, чтобы вы могли загрузиться в нее и иметь всю свою память.

...