Eu tenho no meu sistema um ArrayList “gigante”, hoje ele ocupa 2GB de memoria. Conforme o passar do tempo ele crescerá ainda mais.
Existe alguma forma de colocar esse arraylist em um cluster fazendo um escalonamento horizontal. Ou seja, programar de tal maneira q se ele vier a crescer muito eu apenas adicionaria mais uma maquina no cluster.
legal, entrei no site e parece q é exatamente isso q eu preciso mesmo.
Vc sabe dizer qual o limite q da pra aumentar o heap de memoria no java?
Por exemplo, se tiver um servidor com 50GB de memoria RAM eu consigo habitar esses 50GB para o java usar (Por exemplo: -Xmx50000m) e consigo ter um arraylist que ocupe esses GB?
s4nchez, Como funciona no seu caso? Como esta sua arquitetura?
O limite depende nao soh de quanta memoria o servidor possui, mas tambem do sistema operacional (windows tem mais limitacoes) e architetura (32bit v 64bit).
No meu caso a motivacao nao foi quantidade de dados, e sim processamento e escalabilidade. O total de dados nao deve passar de 1GB atualmente porem o processamento para gera-los excede a capacidade de processamento de uma unica maquina. Neste caso optamos por usar Hazelcast para particionar os dados e cada maquina soh processa elementos que estao armazenados na memoria local. Enquanto isso quem apenas le esses dados possui uma unica referencia a colecao como um todo.