下载大文件时内存溢出怎么解决??

麻烦帮忙看看
报错:java.lang.OutOfMemoryError: Java heap space

  @RequestMapping("/download")
  public void download (HttpServletResponse res,@Param("url")String url) throws IOException{
      byte[] retArr = null; 
      String fileName = new String(url.getBytes(),"ISO-8859-1");
      String path = request.getSession().getServletContext().getRealPath("vod"+File.separator+"log"+File.separator+url); 

          try {  
              File file = new File(path);  
              FileInputStream fis = new FileInputStream(file);  
              ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);  
              byte[] b = new byte[1000];  
              int n;  
              while ((n = fis.read(b)) != -1) {  
                  bos.write(b, 0, n);  
              }  
              fis.close();  
              bos.close();  
              retArr = bos.toByteArray();  
          } catch (FileNotFoundException e) {  
              e.printStackTrace();  
          } catch (IOException e) {  
              e.printStackTrace();  
          }  
      OutputStream os = res.getOutputStream();  
      try {  
          res.reset();  
          res.setHeader("Content-Disposition", "attachment; filename="+fileName);  
          res.setContentType("application/octet-stream; charset=utf-8");  
          os.write(retArr);  
          os.flush();  
      } finally {  
          if (os != null) {  
              os.close();  
          }  
      }  
  }

3个回答

用BufferedInputStream读取文件。new BufferedInputStream(new FileInputStream(file);
增加虚拟机内存
分块存储大文件

wy123123000
wy123123000 谢谢大神
2 年多之前 回复

建议使用BufferedInputStream代替你写的那个,BufferedInputStream(InputStream in, int size)还可以控制size,更适合大文件copy

wy123123000
wy123123000 嗯嗯,好了,谢谢
2 年多之前 回复
wy123123000
wy123123000 这个我在我eclipse上没找到。。。。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
listFiles 大数据量时内存溢出
描述: 获取一个文件集合,通过文件获取文件名集合,再根据文件内容筛选文件,存储在Map里 问题: 文件服务器A文件夹下,存在近7万个文件,以XML格式存储,调用listFiles,再做put操作时, 内存就会溢出,调整过eclipse的堆与非堆内存,加大了1024M,也同样抛出内存溢出异常, 恳请大家指点迷津,给个好的解决方案,或者案例参考,谢谢了 这个方法需要将内容存储在Map对象内然后返回这个Map对象,给其他成员调用,这个内存溢出,因该是在Map对象 put 的时候就hold不住了
Java Mysql blob 存取大文件时内存溢出如何解决?
<p>今天模拟一些数据,需要将一些大文件我用的是755M(可以更大)存入到Mysql的一个longblob字段中。</p> <p>我使用了pstmt.setBinaryStream(2, fis, f.length());的方式,但总是抛出异常。</p> <p>貌似Mysql 的JDBC总是先将stream中的数据读成byte[]然后再往数据库中存,所以总是内存溢出,不知哪位高人可有解决方案?!</p> <p>我的代码:</p> <p> </p> <pre name="code" class="java"> ApplicationContext contxt = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); DataSource ds = contxt.getBean("dataSource", DataSource.class); Connection con = ds.getConnection(); PreparedStatement pstmt = con.prepareStatement("insert into saved_file values(?, ?)"); File f = new File("D:\\test\\office_755M.iso"); // 测试用的文件,确定大小 for (int i = 1; i &lt; 11; i++) { System.out.println("添加: " + i + "..."); pstmt.setInt(1, i); FileInputStream fis = new FileInputStream(f); pstmt.setBinaryStream(2, fis, f.length()); int rt = pstmt.executeUpdate(); fis.close(); System.out.println("添加结果: " + rt); } pstmt.close(); con.close();</pre> <p> </p> <p>抛出异常:</p> <p> </p> <pre name="code" class="java">Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at com.mysql.jdbc.Buffer.ensureCapacity(Buffer.java:156) at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2544) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2401) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at com.wondersgroup.cache.test.DBDataPrepare.main(DBDataPrepare.java:31) </pre>
后台下载文件报内存溢出,怎么解决
后台下载文件时,文件本身都不大,单后台任务管理器监控到内存使用率 从200m一下就到了2000多m,下3-4次文件后就报内存溢出了,截图如下: ![图片说明](https://img-ask.csdn.net/upload/201904/28/1556445864_551228.jpg) ![图片说明](https://img-ask.csdn.net/upload/201904/28/1556445988_231866.jpg)![图片说明](https://img-ask.csdn.net/upload/201904/28/1556446014_463601.jpg)![图片说明](https://img-ask.csdn.net/upload/201904/28/1556446023_499255.jpg) 请大神指教!!!
读取txt文件 数据格式是json 然后进行添加或修改的操作 为什么老是内存溢出
读取txt文件 数据格式是json json数据有2.3w条 然后进行添加或修改的操作 为什么老是内存溢出,请问有没有好一点的解决方法
递归一个文件夹下所有文件以及文件夹,造成栈内存溢出,求解决
我需要递归一个文件夹下所有的文件并进行操纵,文件夹下也有文件夹,我用一个list存储递归得到的所有文件可能会造成溢出。我需要当此list为10000时候执行,然后清空list,请问如何实现。代码如下: static void getFiles(String filePath){ File root = new File(filePath); File[] files = root.listFiles(); for(File file:files){ if(file.isDirectory()){//是否为文件夹 getFiles(file.getAbsolutePath()); filelist.add(file.getAbsolutePath());//filelist是ArrayList,用来存储所有文件路径; }else{ //对文件的操作; } 请问我改如何修改才能让程序在flielist大小每当10000执行一次,然后在将其清空,继续执行,不至于让filelist太大从而解决内存溢出问题。本人线程比较菜,求大神帮忙。最好能在此代码上修改。
递归一个文件夹下的所有文件以及文件夹,造成内存溢出问题
我需要递归一个文件夹下所有的文件并进行操纵,文件夹下也有文件夹,我用一个list存储递归得到的所有文件可能会造成溢出。我需要当此list为10000时候执行,然后清空list,请问如何实现。代码如下: static void getFiles(String filePath){ File root = new File(filePath); File[] files = root.listFiles(); for(File file:files){ if(file.isDirectory()){//是否为文件夹 getFiles(file.getAbsolutePath()); filelist.add(file.getAbsolutePath());//filelist是ArrayList,用来存储所有文件路径; }else{ //对文件的操作; } 请问我改如何修改才能让程序在flielist大小每当10000执行一次,然后在将其清空,继续执行,不至于让filelist太大从而解决内存溢出问题。本人线程比较菜,求大神帮忙。最好能在此代码上修改。
执行PHP脚本出错 内存溢出?
![图片说明](https://img-ask.csdn.net/upload/202002/27/1582801192_55267.png) 今天公司搬家 搬完家 其他都没问题 但是运行脚本内存的时候出现内存溢出 原先使用的lnmp的环境 今天搬家测试是用的是宝塔的换将 结果出现内存溢出 我尝试过 扩大内存但是发现一点用没有 扩展无限直接报错 求大神帮忙解决一下感激不尽!执行的PHP脚本文件加密的 原服务器也是加密测试没问题
tomcat内存溢出问题,急求解决
tomcat报错信息 当前JDK版本:20.45-b01 最大内存=1437MB; 总的内存=1437MB; 空闲内存=1367MB; [SHWT] 2017年03月30日 09:43:50 服务器:发布框架版本_Ver.2.2.3 [SHWT] 2017年03月30日 09:43:50 服务器:已成功绑定Web容器上下文... [SHWT] 2017年03月30日 09:43:50 服务器:网上消息文件上载临时路径->>C:\Users\Administrator\workspace\ssxf\WebContent\upload [SHWT] 2017年03月30日 09:43:50 服务器:网上消息文件下载临时路径->>C:\Users\Administrator\workspace\ssxf\WebContent\wsxxBackUp [SHWT] 2017年03月30日 09:43:50 服务器:DEPLOYID=SHWT [SHWT] 2017年03月30日 09:43:50 服务器:加载系统配置信息完成... [SHWT] 2017年03月30日 09:43:50 高速缓存:TS_BZDM 共加载258条记录 [SHWT] 2017年03月30日 09:43:50 高速缓存:TS_BZDM(list) 共加载11条记录 [SHWT] 2017年03月30日 09:43:50 高速缓存:T_USER 共加载112条记录 [SHWT] 2017年03月30日 09:43:50 高速缓存:TS_DEPART 共加载40条记录 [SHWT] 2017年03月30日 09:43:50 高速缓存:TS_FYMC 共加载3572条记录 [SHWT] 2017年03月30日 09:43:50 高速缓存:T_ROLE 共加载14条记录 [SHWT] 2017年03月30日 09:43:50 服务器:缓存对象加载完成... [SHWT] 2017年03月30日 09:43:50 定时器:在线用户检测服务启动完成... [SHWT] 2017年03月30日 09:43:50 服务器:发布信访版本_Ver.2016-02-26 [SHWT] 2017年03月30日 09:43:50 服务器:Request线程同步器注册成功... 2017-3-30 9:43:50 org.apache.cxf.transport.servlet.CXFServlet updateContext 信息: Load the bus with application context 2017-3-30 9:43:50 org.apache.cxf.bus.spring.BusApplicationContext getConfigResources 信息: No cxf.xml configuration file detected, relying on defaults. 2017-3-30 9:43:50 org.apache.cxf.transport.servlet.AbstractCXFServlet replaceDestinationFactory 信息: Servlet transport factory already registered 2017-3-30 9:43:53 org.apache.catalina.loader.WebappClassLoader validateJarFile 信息: validateJarFile(C:\Users\Administrator\workspace\ssfw_apporg\WebContent\WEB-INF\lib\servlet-api2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) Exception in thread "main" java.lang.OutOfMemoryError: PermGen space at java.lang.Throwable.getStackTraceElement(Native Method) at java.lang.Throwable.getOurStackTrace(Throwable.java:591) at java.lang.Throwable.printStackTraceAsCause(Throwable.java:481) at java.lang.Throwable.printStackTrace(Throwable.java:468) at java.lang.Throwable.printStackTrace(Throwable.java:451) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:421) Exception in thread "DefaultQuartzScheduler_QuartzSchedulerThread" java.lang.OutOfMemoryError: PermGen space 内存明明还有很多,但却报内存溢出![图片说明](https://img-ask.csdn.net/upload/201703/30/1490838696_386678.png)
java解析xml文件多个线程同时访问时内存溢出
<h3>     java解析xml文件多个线程同时访问时内存溢出,代码如下:</h3> <p><strong><span style="white-space: pre;"> </span>解析的xml文件大小大概2M-10M,该怎么解决呢?</strong></p> <p> </p> <pre name="code" class="java">String sourceFile = ConfigReader.get("data.store.path") + article.getSourceFile(); org.dom4j.Document document = null; FileInputStream fin = null; try { fin = new FileInputStream(new File(sourceFile)); document = new SAXReader().read(fin); } catch (final FileNotFoundException e) { final String msg = "内容单元xml文件不存在:" + sourceFile; log.error(msg, e); throw new RuntimeException(msg, e); } catch (final DocumentException e) { final String msg = "解析内容单元xml文件失败:" + sourceFile; log.error(msg, e); throw new RuntimeException(msg, e); } finally { IOUtils.closeQuietly(fin); } final StringBuilder xpath = new StringBuilder("/KFMP/DOCS/DOC[@GUID='") .append(article.getGuid()).append("']/").append("CONTENT"); final Node node = document.selectSingleNode(xpath.toString()); final String value = node.getText(); article.setContent(value); final StringBuilder coordXpath = new StringBuilder("/KFMP/DOCS/DOC[@GUID='") .append(article.getGuid()).append("']/").append("COORDS"); final Node coordsNode = document.selectSingleNode(coordXpath.toString()); final String coordsValue = coordsNode.getText(); article.setCoords(coordsValue); final StringBuilder briefXpath = new StringBuilder("/KFMP/DOCS/DOC[@GUID='") .append(article.getGuid()).append("']/").append("BRIEF"); final Node briefNode = document.selectSingleNode(briefXpath.toString()); final String briefValue = briefNode.getText(); article.setBrief(briefValue); return article;</pre>
spring junit 内存溢出
测试类如下: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:/spring/*/application-*_GL.xml", "classpath:/spring/*/*/applicationContext-*_GL.xml", "classpath:/spring/*/*/application-*_GL.xml" }) public class OmsOrderServiceImpl_GLTest { //...... } 运行后控制台输入如下: log4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFileAppender. log4j:WARN No such property [datePattern] in org.apache.log4j.RollingFileAppender. java.lang.OutOfMemoryError: PermGen space 项目比较大,spring文件分的很多,相互之间又有引用,我索性把全部文件加载进来,是不是因为加载的文件多,而导致的内存溢出?要如何解决呢?
Tomcat8中如何内存溢出,如何增大内存?
控制台报错: java.lang.OutOfMemoryError: PermGen space at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:883) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633) at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:773) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1324) at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:326) at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:305) at org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:50) at org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:207) at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:169) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 代码报错位置(字符串可以看到json串,但是执行报内存溢出): ![图片说明](https://img-ask.csdn.net/upload/201606/15/1465961492_415406.jpg) 我是在本地tomcat8下面跑的,按照网上所说,我修改了catalina.bat文件增大内存,可可是貌似没有生效(如截图所示,本地tomcat数值一直没变),求助 ![图片说明](https://img-ask.csdn.net/upload/201606/15/1465961473_564921.jpg) catalina.bat 第一行修改了set JAVA_OPTS=-Xms1024m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m, :noJuliConfig set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%" JAVA_OPTS='-Xms512m -Xmx1024m' JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=512M -XX:MaxPermSize=2048m" 等等,没有用啊。。 分不多,都给你了,真心求教。(纯粹赋值张贴得别拿来了,我也上网搜了还没解决)
求大神指教 安卓 Eclipse内存溢出
eclipse 内存溢出 运行的项目并不多 项目使用真机测试 和电脑连接成功后 日志不停刷新 已经出现过多次 解决方法是修改eclipse.ini文件 XX:PermSize=XXX XX:MaxPermSize=XXX 过段时间 又会出现 没法根治 真正的原因是啥 ???
Android使用ViewPager实现本地相册,图片太多内存溢出,如何解决?
用viewpager实现相册,由于加载的图片量很多,造成内存溢出。我在网上找了半天,然后修改了方法,在适配器中用了异步加载图片,并且每次用了还销毁了。但是随着图片的增加,内存占用量越来越大。直到图片为24张的时候,内存超过100M,程序就崩溃了。现在又在AndroidManifest.xml中加了android:largeHeap="true",加载31张图片没有问题。但是,我想知道,有没有减少内存使用的好办法。为什么我用的异步加载,删除了视图,却没有减少内存的使用量? 我简要说明一下我的做法,扫描得到某一个文件夹里的文件。得到文件的个数N,然后添加N个视图。在PagerAdapter的instantiateItem中异步加载图片。 public class MainActivity extends Activity { private ViewPager viewPager; private List<View> views; File[] files; String save_path ,path; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); viewPager = (ViewPager) findViewById(R.id.viewPager); File defaultDir = Environment.getExternalStorageDirectory(); path = defaultDir.getAbsolutePath()+File.separator+"DCIM"+File.separator+"Screenshots"+File.separator; File f_path = new File(path); if(!f_path.exists()){ f_path.mkdir(); } views = new ArrayList<View>(); files = f_path.listFiles(); int N = files.length; Log.i("info", "N = "+N); for (int i = 0; i < N; i++) { ImageView image=new ImageView(this); views.add(image); } PagerAdapter mPagerAdapter = new PagerAdapter(){ @Override public Object instantiateItem(ViewGroup container, int position) { ImageView view=(ImageView) views.get(position); String item=files[position].getName(); Log.i("info", position+"图片名:"+item); Bitmap bitmap = null; try { File file = new File(path+item); if(file.exists()) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig=null; options.inPurgeable = true; options.inInputShareable = true; bitmap = BitmapFactory.decodeFile(path+item,options); } } catch (Exception e) { Log.i("info", "异常:"+e); } view.setImageBitmap(bitmap); container.removeView(views.get(position)); container.addView(views.get(position)); return views.get(position); } @Override public int getCount() { // TODO Auto-generated method stub return views.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1; } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView((View)object); } }; viewPager.setAdapter(mPagerAdapter); } }
java调用kettle导入数据内存溢出!!!!!
现在用java调用kettle的ktr模板往数据库中导入数据。kettle版本为4.2.0,oracle版本为11g。 无论jvm设置多大,只要文件数量比较多,内存会一直涨到溢出。调用过程就创建多个ktr对象TranMete,然后放在Trans里面运行。 求大神解决问题。
怎么使用java Poi解决导入excel表格大数据量时的内存溢出问???大神们,帮帮我。
public String admin_product_list() { // System.out.println("myFileFileName "+myFileFileName); String path = ""; String name = ""; String realpath = ""; String afterfilename = ""; drlogbean = new Daorulog(); int daorutiaoshu = 0; String oldfilename = ""; int rowaccess=2; try { if (myFileFileName != null && !myFileFileName.equals("")) { oldfilename = myFileFileName; String b[] = oldfilename.split("\\."); // 设置上传文件目录 String filePath = ServletActionContext.getServletContext().getRealPath("/upload"); // 基于myFile创建文件输入流 InputStream is = new FileInputStream(myFile); String a[] = myFileFileName.split("\\."); // System.out.println("上传文件名:"+a[0]+"上传文件类型:"+a[1]); // 设置目标文件 DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = new Date(); String strdf = df.format(date).toString(); name = "upload/" + b[0] + "_" + strdf + "." + a[1]; File toFile = new File(filePath, b[0] + "_" + df.format(date).toString() + "." + a[1]); path = filePath + "\\" + name; // System.out.println(path); // 创建一个输出流 OutputStream os = new FileOutputStream(toFile); // OutputStream bos = new // FileOutputStream(filePath);//建立一个上传文件的输出流 int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = is.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead);// 将文件写入服务器 } realpath = filePath + "\\" + b[0] + "_" + strdf + "." + a[1]; afterfilename = b[0] + "_" + strdf + "." + a[1]; System.out.println("realpath " + realpath); System.out.println("sourseTypeName " + sourseTypeName); InputStream is2 = new FileInputStream(realpath); fileRealName = realpath; SXSSWorkbook workbook =new SXSSFWorkbook(rowaccess); Sheet sheet = workbook.getSheetAt(0); Row row = sheet.getRow(headerRow); int lastCellNum = row.getLastCellNum(); for (int i = 0; i < lastCellNum; i++) { if (row.getCell(i) == null || row.getCell(i).toString() == null) continue; cellMap.put(i, row.getCell(i).toString()); } //每当行数达到设置的值就刷新数据到硬盘,以清理内存 if(i/rowaccess==0){ System.out.println("清除缓存重新输入"); //sheet.flushRows(); ((SXSSFSheet)sh).flushRows(); } dwzdlist = productDAO.findAlldanweizidianList(); } } catch (Exception e) { e.printStackTrace(); } malist = productDAO.findAlldanweiList(); return "importStep2"; } /** * 单位码表类型 * * @return */ public String admin_find_danweizidian() { return "danweizidian"; } // =============================2016-05-12 end public String importPreview() { int introwaccess=2;//内存中缓存记录行数 //System.out.println(kuozhan1); try { InputStream is2 = new FileInputStream(fileRealName); SXSSFWorkbook workbook = new SXSSFWorkbook(introwaccess); Sheet sheet = workbook.getSheetAt(0); int lastRowNum = sheet.getLastRowNum(); List<ResourceImport> riList = new ArrayList<ResourceImport>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (int i = firstDataRow; i < lastRowNum+1; i++) { Row row = sheet.getRow(i); ResourceImport ri = new ResourceImport(); // 非标准的详细地址 String nsAddress = ""; if (row.getCell(xiangxiaddress) != null) { nsAddress = row.getCell(xiangxiaddress).toString(); ri.setYehuxiangxiaddress(nsAddress); } String nsAddressClone = nsAddress; ri.setLeibie(leibie.split(",")[0]); if (row.getCell(name) != null) { String nameR = row.getCell(name).toString(); if (nameR.contains("\n")) { String[] nameRA = nameR.split("\n"); StringBuffer sb = new StringBuffer(); for (int k = 0; k < nameRA.length; k++) { if (k != nameRA.length - 1) { sb.append(nameRA[k]); sb.append(","); } else { sb.append(nameRA[k]); } } ri.setYehuname(sb.toString()); } else { ri.setYehuname(nameR); } } if (row.getCell(tel) != null) { Cell cell = row.getCell(tel); if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {//poi导入,转换成String类型 DecimalFormat df = new DecimalFormat("0");//格式化实例化数字 ri.setYehumobilephone(df.format(cell.getNumericCellValue())); } else { ri.setYehumobilephone(cell.toString()); } } if (row.getCell(sex) != null) ri.setYehusex(row.getCell(sex).toString()); if (row.getCell(age) != null) ri.setYehuage(row.getCell(age).toString()); if (row.getCell(dateofbirth) != null) ri.setYehudateofbirth(row.getCell(dateofbirth).toString()); ri.setYehuzhenjiantype(zhenjiantype); if (row.getCell(zhengjiancode) != null) ri.setYehuzhengjiancode(row.getCell(zhengjiancode).toString()); if (row.getCell(yehujinjilinkman) != null) ri.setYehujinjilinkman(row.getCell(yehujinjilinkman).toString()); if (row.getCell(yehujinjilinkmanphone) != null) { Cell cell = row.getCell(yehujinjilinkmanphone); if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {//poi导入,转换成String类型 DecimalFormat df = new DecimalFormat("0");//格式化实例化数字 ri.setYehujinjilinkmanphone(df.format(cell.getNumericCellValue())); } else { ri.setYehujinjilinkmanphone(cell.toString()); } }
怎么解决上传大文件(>100M)jsp的
# 我一上传超过100M的文件 内存就溢出,怎么办,在线等挺急的
solaris 内存溢出问题
编译器版本 Reading specs from /usr/sfw/lib/gcc/sparc-sun-solaris2.10/3.4.3/specs Configured with: /sfw10/builds/build/sfw10-patch/usr/src/cmd/gcc/gcc-3.4.3/configure --prefix=/usr/sfw --with-as=/usr/ccs/bin/as --without-gnu-as --with-ld=/usr/ccs/bin/ld --without-gnu-ld --enable-languages=c,c++ --enable-shared Thread model: posix gcc version 3.4.3 (csl-sol210-3_4-branch+sol_rpath) test.h: include <iostream> #include <vector> #include <string> #include <unistd.h> #include <dirent.h> #include <sys/stat.h> #include <sys/types.h> #define MAX_DATE_STR_LEN 30 #define SECONDS_PER_DAY 3600 * 24 #define PATH_TOKEN "/" #define FILE_TYPE_DIR 0 #define FILE_TYPE_OTHER 1 #define FILE_TYPE_NORMAL_FILE 2 int const FILETYPECOUNT=6 ; using namespace std; using std::vector; using std::string; struct FileInfoSole{ string Name; /* \316\304\274\376\303\373 */ string Path; /* \316\304\274\376\302\267\276\266 */ string FullPath; /* \316\304\274\376\310\253\302\267\276\266 */ long FileId; /* \316\304\274\376\261\352\312\266 */ int Result; /* \264\246\300\355\275\341\271\373 */ int Reason; /* \322\354\263\243\324\255\322\362 */ string ReasonDesc; /* \322\354\263\243\303\350\312\366 */ int Type; /* \316\304\274\376\300\340\320\315 */ long Size; /* \316\304\274\376\263\244\266\310 */ string CreateTime; /* \264\264\275\250\310\325\306\332 */ string ErrFile; /* \264\355\316\363\316\304\274\376\303\373 */ string TmpErrFile; /* \301\331\312\261\264\355\316\363\316\304\274\376 */ string FileType; }; typedef vector<FileInfoSole> FileListSole; test.cpp: #include "test.h" using namespace std; int GetFileListSole(string dir, FileListSole &fileList,string substr, int flag); string tttypes[FILETYPECOUNT]={"CUST","USER","RED","HT","LT","MH"}; int main(){ string dir="./so/"; FileListSole fileList; string substr; GetFileListSole(dir,fileList,substr,0); return 0; } int GetFileListSole(string dir, FileListSole &fileList,string substr, int flag){ DIR *pDir = NULL; if ( ( pDir = opendir(dir.c_str()) ) == NULL ){ return false; } int retCode = 0; FileInfoSole fileInfoSole; cout<<"link sole"<<endl; cout<<fileInfoSole.Name<<endl; cout<<fileInfoSole.Name<<endl; cout<<fileInfoSole.Name<<endl; struct dirent entry; struct dirent *result; cout<<"4"<<fileInfoSole.Name<<endl; //for( retCode = readdir_r( pDir, &entry, &result ); result != NULL && 0 == retCode; retCode = readdir_r( pDir, &entry, &result ) ) retCode = readdir_r( pDir, &entry, &result ); for(int i=0 ;i< 4;i++) { retCode = readdir_r( pDir, &entry, &result ); cout<<"5"<<fileInfoSole.Name<<endl;//循环第一次时,程序在这个地方蹦会了,出现段错误,郁闷彻底,求大侠帮助 if( strcmp( entry.d_name, "." ) == 0 ||strcmp( entry.d_name, "..") == 0) { continue; } cout<<"testa"<<endl; cout<<fileInfoSole.Name<<endl; cout<<"---"<<endl; fileInfoSole.Name = entry.d_name; // cout<<fileInfoSole.Name<<endl; cout<<"testb"<<endl; if (substr!="") { if (fileInfoSole.Name.find(substr)==string::npos) { //printf("%s\n",fileInfoSole.Name.c_str()); continue; } else { //printf("%s\n",fileInfoSole.Name.c_str()); fileInfoSole.FileType=substr; } }else { fileInfoSole.FileType=string(""); for(int k=0;k<FILETYPECOUNT;k++) { if (fileInfoSole.Name.find(tttypes[k])!=string::npos) { fileInfoSole.FileType=string(tttypes[k]); break; } } } //printf("%s\n",fileInfoSole.Name.c_str()); fileInfoSole.Path = dir; fileInfoSole.FullPath.clear(); fileInfoSole.FullPath.append(dir).append(PATH_TOKEN).append(entry.d_name); //GetFileInfo( fileInfoSole ); if ( FILE_TYPE_NORMAL_FILE == fileInfoSole.Type ){ //fileList.push_back(fileInfoSole); } if ( FILE_TYPE_DIR == fileInfoSole.Type ) { if (flag) { GetFileListSole(fileInfoSole.FullPath,fileList,substr, flag); } } } closedir(pDir); cout<<"over"<<endl; return true; } so文件夹: -bash-3.2$ ls -l so total 0 -rw-r--r-- 1 bill bill 0 Apr 10 18:30 fileiiiiiiiiiiiiii 执行程序: -bash-3.2$ ./a.out link sole 4 5 Segmentation Fault (core dumped) -bash-3.2$ 我就想问程序到cout<<"5"<<fileInfoSole.Name<<endl;个语句是报段错误,我猜测是系统调用导致的内存泄露,于是我在程序 FileInfoSole fileInfoSole;和struct dirent entry; 之间放了一个int solearr[200]; 数组,就不会出现段错误了或者把so文件夹下的文件fileiiiiiiiiiiiiii改成短一点的file的时就不会出现段错误了,请问这是什么原因导致的,有什么更好的办法解决这个问题,越详细细越好,等代大神解决.....
大数据量xlsx格式转换xml文件
读取大数据量xlsx文件时候,会内存溢出。看网上解决方法,是通过继承defaulthandle类来按照xml来读取,但是起始无法控制即读取全部内容,在只需要读取一部分的情况下不是最有解决方法。一直在想,能不能用JAVA来一部分一部分读取类似于解析xml一样?求提供思路?C币不多,提供一个作为酬谢
jxl读取一个7M的Excel文件内存益出,网上找遍也找不到解决方案
jxl读取一个7M的Excel文件内存益出,网上找遍也找不到解决方案 <br /> <br />根据客户要求,需要把Excel里的企业证书信息导入到数据库去,我用jxl读取这个EXCEL,然后报错。 <br />如:<pre name="code" class="java"> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space </pre> <br /> <br />这个时候我就有点郁闷了,一开始还以为是eclipse JVM内存不够,然后改了一下eclipse.ini的内存 <br /><pre name="code" class="java"> -vmargs -Xms200m -Xmx600m -XX:PermSize=64M -XX:MaxPermSize=128M </pre> <br /> <br />然后再运行,还是内存溢出,然后我看了一下文件,这个EXCEL文件有7M多,我删除了一部分数据,变成4M多,然后再运行程序,还是内存溢出,接着我换了一个小文件试,运行结果是没有报错。 <br /> <br />所以问题出在EXCEL文件太大,但是有没有办法解决这个java.lang.OutOfMemoryError问题吗? <br /> <br />程序代码: <br /><pre name="code" class="java"> public class ReadExcel { public void readExcelBook() { // 我们先想想一下读取步骤,不管是什么样的Excel操作框架必定都要经历 // 1选取Excel文件,2选择工作簿,3选择Cell,4读取信息。 try { ////通过Workbook的静态方法getWorkbook选取Excel文件 Workbook book = Workbook.getWorkbook(new File(this.getClass().getResource("/").getPath() + "Book2.xls")); // //通过Workbook的getSheet方法选择第一个工作簿(从0开始) Sheet sheet = book.getSheet(0); ////通过Sheet方法的getCell方法选择位置为C2的单元格(两个参数都从0开始) Cell cell = sheet.getCell(1, 1); // 通过Cell的getContents方法把单元格中的信息以字符的形式读取出来 String con = cell.getContents(); System.out.println(con); book.close(); } catch (BiffException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { ReadExcel read = new ReadExcel(); read.readExcelBook(); } } </pre><br/><strong>问题补充</strong><br/>我晕,尽然没有人回贴,也没有人知道?<br /><strong>问题补充:</strong><br /><pre name="code" class="java">晕,你设置eclipse.ini又没用的。 eclipse在运行一个java main程序时是但如给起了一个jvm,你所要做是设置 run configures-&gt;arguments-&gt;vm arguments, 把那些啥Xms Xmx设置下,这样才有用 agapple (初级程序员) 2009-03-05</pre> <br />不好意思啊,设置了也没有用
推荐 130 个令你眼前一亮的网站,总有一个用得着
总结了大学生活两年来,发现的 130 余个黑科技网站,总有一个会让你眼前一亮,赶紧收藏!
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
我在支付宝花了1分钟,查到了女朋友的开房记录!
在大数据时代下,不管你做什么都会留下蛛丝马迹,只要学会把各种软件运用到极致,捉奸简直轻而易举。今天就来给大家分享一下,什么叫大数据抓出轨。据史料证明,马爸爸年轻时曾被...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Flutter 会不会被苹果限制其发展?
这个可能性是存在的,而且不止是 flutter、react-native 、weex 、uni-app 、taro 、Hippy等都存在这个风险,虽然有些框架对比起 flutter 其他框架存在时间稍长,但是这不可否认它们一直都存在这个风向。 只要不是平台自己的亲儿子,那么肯定存在被限制发展的风险,所以这件事上是风险和收益之间的博弈,这是一个“后妈和前任之间的太极。” 先说现状 如今各大平台,如:...
没用过这些 IDEA 插件?怪不得写代码头疼
使用插件,可以提高开发效率。对于开发人员很有帮助。这篇博客介绍了IDEA中最常用的一些插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
Linux必懂知识大总结(补)
关机 1. 数据同步写入磁盘 sync 为了加快对磁盘上文件的读写速度,位于内存中的文件数据不会立即同步到磁盘上,因此关机之前需要先进行 sync 同步操作。 2. shutdown # /sbin/shutdown [-krhc] [时间] [警告讯息] -k : 不会关机,只是发送警告讯息,通知所有在线的用户 -r : 将系统的服务停掉后就重新启动 -h : 将系统的服务停掉后就...
立即提问