Crash na JVM

Alguém já passou por esse erro?

Tenho 1GB de RAM “sobrando” no servidor. Portanto, não é falta de memória.

Outro problema seria o sistema operacional ser de 32 bits, mas vi tópicos no fórum da Oracle de pessoas reclamando do erro, mesmo usando um OS com 64-bit.

[quote]

There is insufficient memory for the Java Runtime Environment to continue.

Native memory allocation (malloc) failed to allocate 131080 bytes for Chunk::new

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 (allocation.cpp:317), pid=31443, tid=850983792

JRE version: 6.0_26-b03

Java VM: Java HotSpot™ Server VM (20.1-b02 mixed mode linux-x86 )

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

Current thread (0x09f4a400): JavaThread “C2 CompilerThread1” daemon [_thread_in_native, id=31452, stack(0x32b0f000,0x32b90000)]

Stack: [0x32b0f000,0x32b90000], sp=0x32b8cdb0, free space=503k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x7248b0][/quote]

Nunca passei por isso,SWAP (Tamanho da partição),não?.

Acredito que não, swap não está sendo usada.
Estranho que eu possuia 2GB de RAM no servidor, depois que subi a memória para 3GB que começou a acontecer os problemas.

Vou continuar fazendo testes.

Okay Boa Sorte Amigo,Se encontrar solução post aqui. Valeu =)

Pelo o que você relatou (aumento de memória), eu não descartaria problema físico de memória. Tente fazer um teste de memória.

Já tentou seguir as sugestões do stak trace?

[quote=asaudate]Já tentou seguir as sugestões do stak trace?

[quote]

Use 64 bit Java on a 64 bit OS

[/quote][/quote]

Já tive um problema em que a solução foi exactamente a contrária. Usar Java de 32 bits no OS de 64 bits

[quote=pmlm][quote=asaudate]Já tentou seguir as sugestões do stak trace?

[quote]

Use 64 bit Java on a 64 bit OS

[/quote][/quote]

Já tive um problema em que a solução foi exactamente a contrária. Usar Java de 32 bits no OS de 64 bits[/quote]

Poderia ser um bug específico da VM 64 bits. Ou um gerenciamento melhor de memória (já que, pelo fato da palavra ter a metade do tamanho, ela naturalmente ocupa menos espaço). Ou apresentar alguma espécie de restrição em relação ao SO (criação / cache de threads). Enfim, não dá pra falar que seu caso é regra; está mais para exceção.

Ou isso é um bug horrendo em que a equipe de engenharia da oracle deixou passar, e que provavelmente iria arrebentar com vários sistemas e softwares no mundo ou você está completamente enganado.

Eu acredito na segunda opção. Numa boa.

Esse tipo de problema pode acontecer fora da máquina virtual se fosse usar uma interface jni em algum assembly(dlls). Por exemplo um método que aloca memória e não a libera no final do uso. Pode estar até mesmo no alto nível. O profiler ou a jvisualvm não acusam nada?

Se puder, poste para nós o heapdump da jvisualm.