[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
RE: Serializacao de objetos novamente....
- Subject: RE: Serializacao de objetos novamente....
- From: Francisco Reverbel <reverbel at ime.usp.br>
- Date: Thu, 27 May 1999 20:41:32 -0300
Nelson Guedes Paulo Junior writes:
> Quando vou utilizar o metodo writeObject da classe Buffer, devo passar
> entre outras coisas um tamanho máximo para o objeto. Qual seria esse
> valor, ou melhor, qual seria um bom valor para um objeto da classe
> Class? Como posso estimar qual valor devo colocar para outros objetos?
Em vez de tentar estimar o tamanho do objeto, a idéia é passar no
maxCount o espaço disponível na página na qual o objeto vai ser escrito.
Você provavelmente está chamando writeObject() de dentro do método
writeTo() de algum DBObject. O método HFPage.insertRecord(), quando
chama writeTo() para escrever um DBObject objeto na página, cuida de
passar ao writeTo() o espaço disponível na página. Se dentro desse
writeTo() voce escrever uma chamada writeObject(), repasse ao
writeObject() o espaço disponível, menos o espaço tomado por outros
writes que você fez antes desse writeObject().
> Existe algum operador do tipo do sizeof do C em Java?
Não.
> É garantido que pro tamanho de página atual eu não vou tentar escrever
> alguma instancia da classe Class que seja maior que o buffer ou que não
> caiba junto com outros campos pertencentes aquele DBObject, por exemplo,
> quando implemento uma classe que implementa a interface DBObject para
> serializar os campos do diretorio de paginas (String/Class/Ponteiro para
> a pagina) pode acontecer de em nenhuma pagina, mesmo uma vazia, caber um
> resgistro desse tipo?
Não há essa garantia. Mas é muitissimo pouco provável que isso
ocorra. Para um registro String/Class/Ponteiro não caber numa página
de 4K vazia a String teria que ser muito longa.
> Devemos tratar este tipo de coisa por exemplo
> tentando "quebrar" o registro em partes e distribuilas em várias páginas
> ou simplesmente lançemos uma excessão e no caso não teremos como tratar
> este tipo de coisa?
Não tente quebrar o registro. Lance uma exceção e pronto.
> Quando eu gravo algum objeto da classe Class, o que
> na verdade esta sendo gravado em disco? Seria algum indentificador de
> arquivo que indentificasse o .class em disco que representa aquele
> objeto?
Sim, um Class serializado inclui o nome completo da classe (a partir do
qual o JDK pode encontrar o arquivo .class no classpath) codificado de
uma forma esquisita, mais um identificador de versão da classe.
Reverbel