[quote=MarcosOLIVEIRA]O que pode estar ocorrendo é que voce esta colocando o video todo em memoria antes de fazer o upload.
assim “estourando” a memoria.
talvez se voce criasse um buffer que le parte do arquivo que esta no disco, e envia por partes sem instanciar o arquivo em memoria, possa resolver.
acho que no seu bean deve ter algum metodo que faça o carregamento do video…
se sim, isso pode ajudar
File arquivo = //o arquivo que voce quer mandar
FileInputStream fileIn = new FileInputStream(arquivo);
BufferedInputStream buffIn = new BufferedInputStream(fileIn);
int tamanho;
byte[] buffer = new byte[1024];//pode ser qualqer tamano que voce quiser
while ((tamanho = buffIn.read(buffer)) != -1) {
//aqui voce envia o buffer que é a divisao do arquivo
}
Parece um pouco complicado mesmo… Mas ja fiz isso usando sockets para envio de arquivos pela rede.
talvez a ideia te ajude mais que o codigo.
[/quote]
esse é meu método :
public String acaoUpdate(UploadEvent evento) throws FileNotFoundException{
System.out.println("----->acaoUpdate()");
System.out.println("----->var medidor é: "+ isMedidor());
this.medidor = true;
System.out.println("----->var medidor agora é: "+isMedidor());
FacesContext fc = FacesContext.getCurrentInstance();
ServletContext sc = (ServletContext)fc.getExternalContext().getContext();
String realTargetPath = sc.getRealPath("/");
UploadItem item = evento.getUploadItem();
String filePathName = item.getFileName();
String fileName = "";
StringTokenizer st = new StringTokenizer(filePathName,"\");
while(st.hasMoreElements()){
fileName = st.nextToken();
}
realTargetPath = realTargetPath + "REPOSITORIO_VIDEOS\"+fileName;
OutputStream out = new FileOutputStream(realTargetPath);
try{
out.write(item.getData());
out.close();
}catch(IOException e){
System.out.println("-----> msg de erro da exeption: ");
System.out.println(e);
}
this.nomeReal = fileName;
this.urlVideo = "http://localhost:8080/TV_BD/REPOSITORIO_VIDEOS/"+this.nomeReal;
System.out.println("-----> O arquivo foi enviado para\n"+realTargetPath);
System.out.println("-----> A URL do video é: "+this.urlVideo);
return "cadastro";
}
eu devo incluir sua logica dentro do meu try?
try{
out.write(item.getData());
out.close();
}
Ao inves de colocar out.write(-----) com o dado inteiro tu vai criar o buffer que vai mandar os pedaços do teu arquivo.
Cara, primeiro tu vai instanciar o teu arquivo como File e criar o buffer
o out.write tu vai colocar dentro do while que te passei.
oque ele vai fazer é:
1- abrir uma stream de leitura para o arquivo
FileInputStream fileIn = new FileInputStream(arquivo);
2 - BufferedInputStream de leitura do arquivo
3 - Intanciar o buffer com um tamanho qualquer que voce queira enviar por vez, sem que estoure a memoria
byte[] buffer = new byte[1024];
4 - um tamanho que é um indicador se chegou ao fim da stream de leitura
5 - while: enquanto nao encher o buffe, joga os dados dentro do buffer saindo do buffIn que esta lendo o arquivo.
quando cheio
out.write(buffer)
out.close()
espero ter ajudado
opa
tenho este problema de memoria tambem num relatorio meu
mas nao posso limitar o sql com offset e limit porque preciso realmente listar todos os dados
o que fazer ?
obrigado
Pessoal estou com um erro parecido, não consigo reolver por nada
veja o codigo
log catalina.out:
May 23, 2011 9:43:32 AM com.sun.faces.context.SessionMap put
WARNING: JSF1063: WARNING! Setting non-serializable attribute value into HttpSession (key: albumVisualizacaoMB, value class: apresentacao.AlbumVisualizacaoMB).
May 23, 2011 9:43:32 AM org.primefaces.util.ComponentUtils findClientIds
INFO: Cannot find component with identifier "dlgFotoGrande" in view.
May 23, 2011 9:43:33 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at com.sun.faces.context.flash.ELFlash.getPhaseMapForReading(ELFlash.java:748)
at com.sun.faces.context.flash.ELFlash.isEmpty(ELFlash.java:466)
at com.sun.faces.facelets.util.DevTools.writeVariables(DevTools.java:318)
at com.sun.faces.facelets.util.DevTools.writeVariables(DevTools.java:208)
at com.sun.faces.facelets.util.DevTools.debugHtml(DevTools.java:123)
at com.sun.faces.renderkit.RenderKitUtils.renderHtmlErrorPage(RenderKitUtils.java:1139)
at com.sun.faces.context.ExceptionHandlerImpl.throwIt(ExceptionHandlerImpl.java:249)
at com.sun.faces.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:136)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)
May 23, 2011 9:52:21 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.OutOfMemoryError: GC overhead limit exceeded
este é o log em produção pois em desenvolvimento nao da este problema…
no browser da a menssagem Java heap space - java.lang.OutOfMemoryError: Java heap space
Como resolvo isso no netbeans???
o erro
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
minha maquina tem 1 gb de memoria!!!
Como faço pra aumentar a memoria da VM no netbeans
aumentei a memoria ainda continua com o mesmo problema, o q pode ser
Um result numa JTable numa base de dados com mais de 5.000 linhas!!!