求救

TangShi2011 2011-09-19 11:16:46
org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.OutOfMemoryError: Java heap space
...全文
100 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
TangShi2011 2011-09-19
  • 打赏
  • 举报
回复
package com.sitech.action.opertable;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class TestExcel {
public static void main(String[] args) throws IOException {
List<String[]> rowList = getExcel();
for (int i = 0; i < 5; i++) {
String[] strs = rowList.get(i);
for (int j = 0; j < 8; j++) {
String str = strs[j];
System.out.print(str + " ");
}
System.out.println();
}
}

public static List<String[]> getExcel() {
try {
InputStream myXls = new FileInputStream("D:\\号百法律秘书退赔款.xls");
HSSFWorkbook hwb = new HSSFWorkbook(myXls);// 获取excel文本对象
HSSFSheet sheet = hwb.getSheetAt(1);
int rowCount = sheet.getLastRowNum() + 1;
System.out.println(rowCount);
List<String[]> rowList = new ArrayList<String[]>();
for (int i = 0; i < rowCount; i++) {
HSSFRow row = sheet.getRow(i);
if(row == null){
continue;
}
String[] cellvalue = new String[8];
for (short j = 0; j < 8; j++) {
HSSFCell cell = row.getCell(j);
if (cell != null) {
if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {// 判断单元格为字符串
cellvalue[j] = cell.getStringCellValue().trim();
System.out.println("第" + i + "行第" + j + "列: "
+ cellvalue[j]);
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {// 判断单元格为数字
if (j == 7) {
cellvalue[j] = cell.getNumericCellValue() + "";
}
cellvalue[j] = (int) cell.getNumericCellValue()
+ "";
System.out.println("第" + i + "行第" + j + "列: "
+ cellvalue[j]);
} else {
cellvalue[j] = "";
}
}else{
break;
}
}
rowList.add(cellvalue);
}
return rowList;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
这是我的测试代码,直接运行就可以。在文本页面运行就报错了
TangShi2011 2011-09-19
  • 打赏
  • 举报
回复
好多方法都试过了,怎么都不行啊!
EverWHL 2011-09-19
  • 打赏
  • 举报
回复
是不是哪里导致死循环,导致内存溢出
飓风zj 2011-09-19
  • 打赏
  • 举报
回复
溢出 好好检查你的代码吧
nijimin100 2011-09-19
  • 打赏
  • 举报
回复
这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.
设置的方法主要是几个.

1.可以在windows 更改系统环境变量
加上JAVA_OPTS=-Xms64m -Xmx512m

2,如果用的tomcat,在windows下,可以在

C:\tomcat5.5.9\bin\catalina.bat 中加上:

set JAVA_OPTS=-Xms64m -Xmx256m

位置在: rem Guess CATALINA_HOME if not defined 这行的下面加合适.

3.如果是linux系统
Linux 在{tomcat_home}/bin/catalina.sh的前面,加
set JAVA_OPTS='-Xms64 -Xmx512'


java.lang.OutOfMemoryError: Java heap space
使用Java程序从数据库中查询大量的数据时出现异常:
java.lang.OutOfMemoryError: Java heap space
在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。
例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar
如果Heap Size设置偏小,除了这些异常信息外,还会发现程序的响应速度变慢了。GC占用了更多的时间,而应用分配到的执行时间较少。
Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
Heap size的 -Xms -Xmn 设置不要超出物理内存的大小。否则会提示“Error occurred during initialization of VM Could not reserve enough space for object heap”。
liuyuhua0066 2011-09-19
  • 打赏
  • 举报
回复
内存溢出
jc8futao 2011-09-19
  • 打赏
  • 举报
回复
代码??
TangShi2011 2011-09-19
  • 打赏
  • 举报
回复
已经解决了。这个程序是使用POI读取excel文件,但是它最大好像只能读取小于3M的文件。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧