Pessoal estou com uma duvida pertinente, quando trabalhamos com arquivos Serializados em java usamos o método writeObject para escrevê-los no arquivo, e o método readObject para lê-los do arquivo. a minha duvida é se eu salvasse num arquivo 3 objetos na seguinte sequencia
writeObject(objeto 1)
writeObject(objeto 2)
writeObject(objeto 3)
como faria para na hora de ler novamente os objetos eu lesse apenas o objeto 3, porquê quando utiliza-se o método readObject ele automaticamente já lê o primeiro no caso “objeto1” existe um jeito de alterar esse cursor aí para ir direto para um objeto específico?.
observação: não posso usar listas ArrayLists etc. Porque neste caso o arquivo meu contém muitos dados e dá bug na memória sem contar o tempo de carregar que é uma eternidade
Sou iniciante no site aqui não sei como faz ainda pra colocar os códigos, mas se só com o texto não der pra visualizar eu tento mandar um código para ficar mais fácil de visualizar, embora seja uma dúvida meio abstrata. agradeço a quem puder responder ae
Seleciona o seu código e clica no botão </>, aí ele ficará formatado.
Não faz sentido o que você disse.
Defina “dá bug na memória”.
O tempo de carga vai variar alguns milissegundos talvez.
Você vai ignorar o objeto lido pelos dois primeiros readObject() e só vai usar a referência do terceiro.
quando eu disse que dá bug na memória é porque preciso liberar mais memoria na JVM para que ele rode se não dá o famoso erro java.lang.OutOfMemoryError: Java heap, eu até tentei otimizar o negócio mas para meu projeto em questão não dá, tenho que utilizar mesmo aí fica pesado sabe, por isso eu estava tentando burlar isso carregando apenas o objeto em questão. e tipo como são muitos objetos que estou salvando demora muito para carregar todos de uma vez, se pudesse carregar apenas um com certeza seria mais rápido, porque quando se trata de carregar arquivos o tamanho influencia no tempo. Por isto a sugestão que você me deu de carregar o objeto e descartar logo em seguida utilizando somente o terceiro não é interessante no meu caso também, mas obrigado mesmo assim amigo
Já pensou em salvar cada objeto num arquivo separado? Talvez resolveria a questão de lentidão ao carregar tudo. Porém, acho que seria necessário mais um arquivo à parte (como se fosse um index) para guardar as referências de qual objeto está em qual arquivo. Entendeu?
entendi parceiro a relação com o index, mas tipo no meu caso seriam então em torno de 1056 arquivos, ficaria extenso demais, mas de fato é uma solução, se não conseguir uma opção melhor estou de decidir entre a sua ideia ou aumentar a memória da JVM mesmo. Valeu aí
Você poderia implementar sua própria serialização, economizaria o espaço desperdiçado com as meta informações das classes.
Entretanto 1056 objetos persistidos não é muita coisa, acho bastante válido você disponibilizar mais memória com o parâmetro -Xmx
1 curtida
Talvez não ajude, mas não seria interessante desistir da serialização e utilizar o Sqlite.
Você poderia migrar estes arquivos para o banco de dados.
1 curtida