Ver um Único Post
Antigo 10-12-2008, 04:39 PM   #4 (permalink)
Setokaiba
Jesus Te Ama, Mas EU Não!
 
Avatar de Setokaiba
 
Registrado em: Oct 2008
Localização: 45º 33º 34º N | 122º 41º 41º W DESTINATION: ANYWHERE Adidas
Posts: 4,133
Agradeceu: 837
Agradecido 6,058 Vezes em 2,106 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Estado:
Pontos: 20,442, Nível: 90
Pontos: 20,442, Nível: 90 Pontos: 20,442, Nível: 90 Pontos: 20,442, Nível: 90
Atividade: 99%
Atividade: 99% Atividade: 99% Atividade: 99%

Nome Real: Anderson Andrade

Inventório de Setokaiba Usuário possui 1x Lock Fan Usuário possui 1x Oakley Usuário possui 1x Apple Inc. Fan/User Usuário possui 1x Honda Usuário possui 1x Windows Seven User

Padrão

Poucos sabem, mas a arquitetura x86 (Um dia na XPZona me perguntaram o que era x86 ) /32bits (Linux/Windows) oferece uma limitação importante para aplicações Java no tocante ao consumo de memória RAM. A arquitetura 32 bits pode endereçar nativamente no máximo 4GB de memória RAM (2^32 = 4.2 bilhões ~ 4Gb). Destes 4GB, metade (2GB) é reservada para o funcionamento do kernel e a outra metade (2GB) fica disponível para outros processos e aplicações. Não vou entrar no mérito da questão do porquê isso ocorre, até porque não entendo muito sobre estes assuntos de JAVA, porém adianto que existem algumas alternativas no Windows 2k/2k3/XP (/PAE) para endereçar um número maior de memória ao invés de 2GB, o mesmo é válido para os kernels mais novos do Linux (2.4 para cima), mas até agora não compreendi muito bem o que isso pode mudar em relação ao suporte à Java.

O fato é que a pilha (heap) do JVM utiliza a memória de forma contínua, alocando um bloco unitário, como um único processo, limitando o uso de RAM por uma instância JVM única à 1.8GB (os 200Mb restantes são usados pelo JVM para atender processos internos).
A pouco mais de uns dois meses, o Estive-O teve um problema e postou um tópico com a dúvida sobre o erro do Heap do Java, que não estava permitindo dar load no servidor, e se não me engano ele já havia locado o seu dedicado e os dias estavam correndo... A resposta foi simples, pois o Java dá erros de Heap Space quando a quantidade de memória informada, é inferior a existente.

Em resumo: se você está pensando em comprar um servidor na arquitetura x86/32bits (Intel/AMD) e pretende instalar mais do que 4GB de memória RAM pense e estude esta questão, pois você poderá estar comprando memória extra (e cara) que não fará a menor diferença, pois não poderá ser usada pelo JVM.

Se a sua aplicação no caso de servidor L2J, precisar de algo maior (o que está se tornando bastante comum hoje em dia), a solução é partir para a arquitetura 64bits (tanto em Windows quanto em Linux), arquitetura que graças à AMD está se tornando mais popular e viável ($) para os nossos bolsos. Em alguns casos você pode optar pelo modelo híbrido 32/64bits (Atlhon64) e ficar pronto para quando for a hora de migrar. O Ivan quem está mais por dentro dos modelos de processadores AMD, e Intel.

O interessante é saber que a arquitetura 32bits Sparc da Sun não apresenta este problema com o JVM. Que diferença faz ser dona da tecnologia não? )

Eu prefiro ficar com Intel por ela ter um nome bonitinho, e também ser conhecida mundialmente... Muitas pessoas ficam até cabreiras quando acessam o site de algum servidor para poder verificar a configuração do servidor, e encontram AMD como processador do servidor.
Eu jogava num servidor L2OFF chamado PvPX e os processadores eram Intel... Mas joguei em servidores que o processador era AMD, a diferença foi imensa, não sei se partia da má administração que não configurou corretamente o servidor, ou se da falta de memória RAM, ou até mesmo no blefe da configuração. Muitas pessoas mentem a configuração do servidor, a pouco tempo atrás eu ajudava um amigo diretamente num servidor L2J, ele emulava num Pentium D e pedia para eu por no site que usava Dual Xeon xD

Setokaiba está online agora  
Os Seguintes 2 Usuários disseram Obrigado(a) para Setokaiba por gostarem deste post :
yschmitzz (10-12-2008), ZeuS (17-02-2009)