Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java bufferedreader或inputstreamreader中的gc开销_Java_Garbage Collection - Fatal编程技术网

Java bufferedreader或inputstreamreader中的gc开销

Java bufferedreader或inputstreamreader中的gc开销,java,garbage-collection,Java,Garbage Collection,我认为问题不在于此。insertStockDailyInfo就是这样 public void insertStockSP(Connection connection,String symbolName, String Code, String latinName, String persianName) throws SQLException { CallableStatement proc = connection.prepareCall("{call insertStock(

我认为问题不在于此。insertStockDailyInfo就是这样

    public void insertStockSP(Connection connection,String symbolName, String Code, String latinName, String persianName) throws SQLException {
    CallableStatement proc = connection.prepareCall("{call insertStock(?,?,?,?)}");
    proc.setString(1, symbolName);
    proc.setString(2, Code);
    proc.setString(3, latinName);
    proc.setString(4, persianName);
    proc.execute();
}

这是堆栈跟踪,我必须说我使用Struts 2。

以下是关于潜在无效性/问题的一些想法:

1,为什么不使用ZIPunPoSt流而不是ZipFile,因为您不需要随机访问文件中间的内部条目。

2我建议您检查文件扩展名,以确保处理包含相对较短行的文本文件。可能会发生这样的情况:从二进制文件逐行读取可能会导致将内存中包含垃圾的长字符串加载到内存中


3 dbBridge方法中可能存在内存泄漏。

如果我理解正确,这就是解压缩文件,但这不是我的意思。我想阅读几乎2000.CSV文件,这是你们所知道的全部文本。我想问题在于新关键字,但在构建阅读器时,我找不到任何替代品。我测试了增加堆大小的代码,它得到了2GB的内存,但再次失败。我认为问题不在于new关键字。除非dbBridge这样做,否则您似乎不会将所有这些文件都存储在内存中。可以显示错误堆栈跟踪吗?是的,问题出在DBBridge中,我应该在执行后关闭“CallableStatement”。谢谢你的帮助。不,问题是由你的代码引起的。养成先看那里的习惯。例如dbBridge.insertStockSP和`dbBridge.insertStockDailyInfo`做什么?任何消耗内存的内容?insertStockSP中存在资源泄漏。你永远不会结束CallableStatement。正如预测的那样。毫无疑问,insertStockDailyInfo中还有一个。每行输入两个漏洞。哦,我会试试看,如果这是问题的话,我真丢脸!谢谢@EJP
    public void insertStockSP(Connection connection,String symbolName, String Code, String latinName, String persianName) throws SQLException {
    CallableStatement proc = connection.prepareCall("{call insertStock(?,?,?,?)}");
    proc.setString(1, symbolName);
    proc.setString(2, Code);
    proc.setString(3, latinName);
    proc.setString(4, persianName);
    proc.execute();
}
Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:64)
at java.lang.StringBuffer.<init>(StringBuffer.java:108)
at java.io.Win32FileSystem.normalize(Win32FileSystem.java:122)
at java.io.Win32FileSystem.normalize(Win32FileSystem.java:189)
at java.io.File.<init>(File.java:367)
at org.apache.naming.resources.FileDirContext.file(FileDirContext.java:765)
at org.apache.naming.resources.FileDirContext.doGetAttributes(FileDirContext.java:398)
at org.apache.naming.resources.BaseDirContext.getAttributes(BaseDirContext.java:1137)
at org.apache.naming.resources.BaseDirContext.getAttributes(BaseDirContext.java:1090)
at org.apache.naming.resources.ProxyDirContext.getAttributes(ProxyDirContext.java:882)
at org.apache.catalina.loader.WebappClassLoader.modified(WebappClassLoader.java:1026)
at org.apache.catalina.loader.WebappLoader.modified(WebappLoader.java:500)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:420)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519)
at java.lang.Thread.run(Thread.java:724)
Exception in thread "http-bio-8080-exec-1" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.jar.Attributes.read(Attributes.java:394)
at java.util.jar.Manifest.read(Manifest.java:199)
at java.util.jar.Manifest.<init>(Manifest.java:69)
at java.util.jar.JarFile.getManifestFromReference(JarFile.java:180)
at java.util.jar.JarFile.getManifest(JarFile.java:166)
at org.apache.catalina.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:3135)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2892)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1210)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1690)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at com.opensymphony.xwork2.util.logging.commons.CommonsLogger.error(CommonsLogger.java:38)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:903)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:574)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:724)