关于内存益处

20170421w 2017-08-09 06:56:16
ERROR [org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler] Unexpected error occurred in scheduled task.
java.lang.OutOfMemoryError: Java heap space
at java.lang.String.toCharArray(String.java:2753)
at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java:2304)
at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java:2286)
at com.mysql.jdbc.StringUtils.getBytesWrapped(StringUtils.java:671)
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4016)
at com.mysql.jdbc.PreparedStatement.setCharacterStream(PreparedStatement.java:3119)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setCharacterStream(NewProxyPreparedStatement.java:443)
at org.apache.ibatis.type.ClobTypeHandler.setNonNullParameter(ClobTypeHandler.java:34)
at org.apache.ibatis.type.ClobTypeHandler.setNonNullParameter(ClobTypeHandler.java:28)
at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:53)
at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:87)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:93)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:64)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:185)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
at com.sun.proxy.$Proxy16.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:278)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:57)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy18.insert(Unknown Source)
at com.aisino.serviceImpl.FilePdfServiceImpl.insert(FilePdfServiceImpl.java:16)
at com.aisino.util.Cneixml.post(Cneixml.java:66)
at com.aisino.Servlet.FPCX.fpcx(FPCX.java:87)

FilePdf filePdf=new FilePdf();
filePdf.setInvId(invId);
filePdf.setFilepdf(twoReadPdf.PdfByte(downLoadByUrl));//这里是pdf文件里。很大
filePdfService.insert(filePdf);

//这里是对mapper的操作插入
public class FilePdfServiceImpl implements FilePdfService{
@Autowired
FilePdfMapper filePdfMapper;
@Override
public int insert(FilePdf record) {
// TODO Auto-generated method stub
return filePdfMapper.insert(record);
}

}

网上说的 在Tomcat/bin下的catalina.bat和catalina.sh 配置了也不行。求大神帮忙看看。
...全文
199 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
20170421w 2017-08-11
  • 打赏
  • 举报
回复
已经把代码优化了一下。没有出现溢出了。谢谢各位大神。主要是当时想的是从url读取pdf文件,保存到本地。然后在读取本地的PDF文件。都放在常量里。导致内存溢出。我把业务改成 UR来获取dpf字符流。然后在生成。这里我就不用在读取了。把一部分为两部分做。
lemon520 2017-08-10
  • 打赏
  • 举报
回复
太大的文件不建议写入数据库里,最好是放在磁盘上,数据里记录文件的路径即可
75闪光雷 2017-08-10
  • 打赏
  • 举报
回复
ava.lang.String.toCharArray(String.java:2753) 看这错误是字符型数组越界啊, 你检查下你定义的string 类型 数组或者引用时有没有越界的
110成成 2017-08-10
  • 打赏
  • 举报
回复
filePdf.setFilepdf(twoReadPdf.PdfByte(downLoadByUrl)); 你是把文件里的内容取出来放入对象 存到数据库吗 如果是数据比较大,还是放入文件中去读写 记录文件路径就行了。

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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