classe e particularmente util em sistemas que |utilizam mais de uma VM com codigo semelhante; os sistemas se beneficiam |do consumo reduzido de memoria virtual. Tambem e util em sistemas que |frequentemente inicializam e encerram VMs, que se beneficiam do |aprimoramento no tempo de inicializacao. |O codigo extra para criar e preencher um novo cache e minimo. O custo do |tempo de inicializacao de uma unica VM e, normalmente, entre 0 e 5%, |dependendo de quantas classes sao carregadas. O tempo de inicializacao da |VM melhorado com um cache preenchido geralmente esta entre 10% e 40%, |dependendo do sistema operacional e do numero de classes carregadas. |Varias VMs executando simultaneamente exibirao beneficios de tempo de |inicializacao total maiores. |Quando voce executar seu aplicativo com compartilhamento de classe, podera utilizar as ferramentas |do sistema operacional para ver a reducao no consumo de memoria virtual. | |Limitacoes e Consideracoes sobre Como Utilizar o Compartilhamento de Classe | |Limites no Tamanho do Cache |O cache para compartilhamento de classes e alocado utilizando o mecanismo |de memoria System V IPC Shared. |O tamanho do cache teorico maximo e 2 GB. o tamanho do |cache que voce pode especificar esta limitado pela quantidade de espaco de | paginacao disponivel |para o sistema. |Como o espaco de endereco virtual de um processo e compartilhado entre o |cache de classes compartilhadas e o heap Java, aumentar o tamanho maximo |do heap Java reduzira o tamanho do cache de classes compartilhadas que |pode ser criado. |O tamanho do cache e limitado pelas configuracoes do SHMMAX, |o qual limita a quantidade de memoria compartilhada que pode ser alocada. Voce pode localizar |essas configuracoes no arquivo /proc/sys/kernel/shmmax. SHMMAX geralmente e definido como 30 MB. | |Modificacao do Bytecode de Tempo de Execucao |Qualquer VM que utilize um agente JVMTI que possa modificar o bytecode nao pode compartilhar |classes a nao ser que a subopcao modified= seja utilizada na |linha de comandos (veja acima). O contexto modificado e um descritor especificado pelo usuario |que descreve o tipo de modificacao que esta sendo executada. Todos os VMs que utilizam um determinado |contexto modificado devem modificar o bytecode de uma maneira previsivel e repetida |para cada classe, de forma que as classes modificadas armazenadas no cache tenham |as modificacoes esperadas quando forem carregadas por outra VM. O motivo |de qualquer modificacao precisar ser previsivel e que as classes |carregadas do cache de classes compartilhadas nao podem ser novamente |modificadas pelo agente. Observe que o bytecode |modificado e nao modificado pode ser armazenado no mesmo cache. Consulte o Manual de Diagnostico para obter mais detalhes sobre este topico. | |Limitacoes do Sistema Operacional |Para sistemas operacionais que podem executar os aplicativos de |32 bits e 64 bits, o compartilhamento de classe nao e permitido entre VMs de 32 bits e 64 bits. |A subopcao listAllCaches listara caches de 32 bits ou 64-bits, |dependendo do modo de endereco da VM que esta sendo utilizado. |O cache de classes compartilhadas requer espaco em disco para armazenar informacoes de identificacao |sobre os caches existentes no sistema. Essas informacoes |estao