Pergunta

Eu tenho um modelo de dados com um esqueleto (metadados) e grandes objetos de dados. Eu gostaria de manter o esqueleto na memória e manter referências fracas aos objetos de dados. Entendo como implementaria isso com Java Plain, como eu criaria um mapa de fracos e limparia etc. Mas estou me perguntando qual seria a melhor maneira de ressuscitar os objetos de dados depois que eles tenham sido GC?

Devo adicionar uma chave técnica ao meu mapa que eu atribuo a um campo no objeto de dados, para que eu possa encontrá -lo novamente? Ou devo ligar para o db.ext (). GetId () e usar esse ID como chave técnica? Nesse caso, como eu receberia essas chaves ao carregar o pai? O que você sugere?

Foi útil?

Solução

Eu adicionaria uma chave técnica ao seu grande objeto de dados. Em seguida, você armazena essa chave técnica em sua classe metadada. Agora, quando você obtém o grande objeto de dados, você o obtém por sua chave técnica. Essa solução bastante simples.

O DB4O realmente usa referências fracas para devolver o mesmo objeto e evitar a desestimação desnecessária. Portanto, quando você pede um objeto e não foi coletado pelo GC, o DB4O retornará o mesmo objeto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top