Caused by: java.lang.OutOfMemoryError: java lang包heap space 如何解决?非常感谢!

博客分类:
这个问题主要还是由这个问题 java.lang.OutOfMemoryError: Java heap space 引起的。第一次出现这样的的问题以后,引发了其他的问题。在网上一查可能是JAVA的堆栈设置太小的原因。   跟据网上的答案大致有这两种解决方法:   1、设置环境变量   解决方法:手动设置Heap size   修改TOMCAT_HOME/bin/catalina.sh   set JAVA_OPTS= -Xms32m -Xmx512m   可以根据自己机器的内存进行更改。   2、java -Xms32m -Xmx800m className   就是在执行JAVA类文件时加上这个参数,其中className是需要执行的确类名。(包括包名)   这个解决问题了。而且执行的速度比没有设置的时候快很多。   如果在测试的时候可能会用Eclispe 这时候就需要在Eclipse -&run -arguments 中的VM arguments 中输入-Xms32m -Xmx800m这个参数就可以了。   后来在Eclilpse中修改了启动参数,在VM arguments 加入了-Xms32m -Xmx800m,问题解决。   一、java.lang.OutOfMemoryError: PermGen space
  PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,   这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,   它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对   PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,   这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小   超过了jvm默认的大小(4M)那么就会产生此错误信息了。   解决方法: 手动设置MaxPermSize大小   修改TOMCAT_HOME/bin/catalina.sh   在“echo "Using CATALINA_BASE:
$CATALINA_BASE"”上面加入以下行:   JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m   建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。   二、java.lang.OutOfMemoryError: Java heap space   Heap size 设置   JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,   其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可   进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。   提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。   提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
  解决方法:手动设置Heap size   修改TOMCAT_HOME/bin/catalina.sh   在“echo "Using CATALINA_BASE:
$CATALINA_BASE"”上面加入以下行:   JAVA_OPTS="-server -Xms800m -Xmx800m
-XX:MaxNewSize=256m"   三、实例,以下给出1G内存环境下java jvm 的参数设置参考:   JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "   很大的web工程,用tomcat默认分配的内存空间无法启动,如果不是在myeclipse中启动tomcat可以对tomcat这样设置:   TOMCAT_HOME\bin\catalina.bat 中添加这样一句话:   set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m   如果要在myeclipse中启动,上述的修改就不起作用了,可如下设置:   Myeclipse-&preferences-&myeclipse-&servers-&tomcat-&tom cat×.×-&JDK面板中的   Optional Java VM arguments中添加:-Xmx1024M -Xms512M -XX:MaxPermSize=256m   在myeclipse中启动Tomcat时,提示"ava.lang.OutOfMemoryError: Java heap space",解决办法就是:   Myeclipse-&preferences-&myeclipse-&servers-&tomcat-&tom cat×.×-&JDK面板中的   Optional Java VM arguments中添加:-Xmx1024M -Xms512M -XX:MaxPermSize=256m   //以上是转载
  我遇到的错误是在myeclipse中启动Tomcat时,提示"ava.lang.OutOfMemoryError: Java heap space"   以上三点我都试过了 就是不知道自己的代码从哪里进入死循环
我运用的是struts,hibernate,spring   根据错误提示JSONWrite 找到自己项目下pojo下hibernate的映射文件   eg:   有两张关联的表 生成两个相联的实体类 和映射文件 PersonInfomation和StateOffice   因为映射文件和实体类是从数据库表自动生成的
所以都是自动生成双向的关系   在PersonInfomation中private PersStateOffice persStateO   并且在StateOffice中private Set&PersPersonInformation& persPersonInformations = new HashSet&PersPersonInformation&(   0);   所以在封装json数据的时候就会出现死循环现象 不断的从两个实体类中封装 导致内存溢出   解决方案 1 取消StateOffice中的关联 2手动封装json数据(为了不让查询数据出现错误与冲突 我选择手动封装json数据)   eg://获取任职类型   public String loadOfficeType() throws Exception {   PrintWriter out = response.getWriter();   typeOfficeList=officeTypeService.getOfficeType();   out.print("{typeOfficeList:[");   for(int i=0;i&typeOfficeList.size();i++){   out.print("{typeOfficeId:'"+typeOfficeList.get(i). getTypeOfficeId()+"',");   out.print("typeOffice:'"+typeOfficeList.get(i).get TypeOffice()+"'}");   if(i!=typeOfficeList.size()-1){   out.print(",");   }   }   out.print("]}");      }
浏览: 140621 次
来自: 沈阳
赞一个,确实是ok了~
赞一个,,,。
贝多芬该表
python的写法不是很完美吧?for j in range( ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'热心人帮助下,java.lang.OutOfMemoryError: Java heap space - ITeye问答
在tomcat下出现java.lang.OutOfMemoryError: Java heap space 怎么解决,在网上找了很多资料,都解决不了
是程序有问题吗? 请给出解决方法,感谢
问题补充:
org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'doJobNcdd003' on target class [class $Proxy7] nested exception is java.lang.OutOfMemoryError: Java heap space
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:273)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.lang.Class.getInterfaces(Native Method)
at org.hibernate.intercept.FieldInterceptionHelper.isInstrumented(FieldInterceptionHelper.java:51)
at org.hibernate.intercept.FieldInterceptionHelper.isInstrumented(FieldInterceptionHelper.java:62)
at org.hibernate.engine.EntityEntry.requiresDirtyCheck(EntityEntry.java:259)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:145)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:58)
at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1184)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1708)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
at org.springframework.orm.hibernate3.HibernateTemplate$36.doInHibernate(HibernateTemplate.java:1056)
at org.springframework.orm.hibernate3.HibernateTemplate$36.doInHibernate(HibernateTemplate.java:1)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1046)
at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1039)
at com.util.HibernateUtil.getAll(HibernateUtil.java:156)
at com.service.impl.Ncdd003ServiceImpl.saveNcdd001s(Ncdd003ServiceImpl.java:170)
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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy6.saveNcdd001s(Unknown Source)
20:15:34,000 [org.quartz.core.ErrorLogger]-[ERROR] Job (DEFAULT.jobDetail threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'doJobNcdd003' on target class [class $Proxy7] nested exception is java.lang.OutOfMemoryError: Java heap space]
at org.quartz.core.JobRunShell.run(JobRunShell.java:227)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
Caused by: org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'doJobNcdd003' on target class [class $Proxy7] nested exception is java.lang.OutOfMemoryError: Java heap space
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:273)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
... 1 more
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.lang.Class.getInterfaces(Native Method)
at org.hibernate.intercept.FieldInterceptionHelper.isInstrumented(FieldInterceptionHelper.java:51)
at org.hibernate.intercept.FieldInterceptionHelper.isInstrumented(FieldInterceptionHelper.java:62)
at org.hibernate.engine.EntityEntry.requiresDirtyCheck(EntityEntry.java:259)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:145)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:58)
at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1184)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1708)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
at org.springframework.orm.hibernate3.HibernateTemplate$36.doInHibernate(HibernateTemplate.java:1056)
at org.springframework.orm.hibernate3.HibernateTemplate$36.doInHibernate(HibernateTemplate.java:1)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1046)
at org.springframework.orm.hibernate3.HibernateTemplate.findByCriteria(HibernateTemplate.java:1039)
at com.util.HibernateUtil.getAll(HibernateUtil.java:156)
at com.service.impl.Ncdd003ServiceImpl.saveNcdd001s(Ncdd003ServiceImpl.java:170)
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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy6.saveNcdd001s(Unknown Source)
出错的信息
问题补充:郭伟198711 写道内存溢出 你调用的方法执行不了报错了& 具体要查原因的话还要看你的代码
public void doJobNcdd003(){
Jobtask jobtask =
("开始值行取数据任务");
if(this.getUserId()==null){
jobtask = this.saveJobBeginRecord("autoexecute");
Calendar calendar = Calendar.getInstance();//取系统日期
int amOrPm = calendar.get(Calendar.AM_PM);
String nowDate = fastDateFormat.format(calendar);//今天
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);//日期加一
String nextDate =fastDateFormat.format(calendar);//取得下一天
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) -2);//日期减一
int nextdate =
Integer.parseInt(nextDate);
int nowdate = Integer.parseInt(nowDate);
long nowdatel = Long.parseLong(nowDate);
long nextdatel = Long.parseLong(""+nextdate);
Connection con = ConnManage.getConnection();
if(amOrPm==1){
this.findManufacture(nextdate, "10",con);
this.saveManufactureWarehouseNumber(nextdatel); //取12仓库在库
ncdd003Service.saveNcdd001s(nextdatel, "1");
//生成中转配料单
ncdd001Service.saveWarehouseNum(nextdate,"1");
//ncdd001取1200在库
this.findManufacture(nowdate, "20",con);
this.saveManufactureWarehouseNumber(nowdatel); //取12仓库在库
ncdd003Service.saveNcdd001s(nowdatel, "2");
//生成中转配料单
ncdd001Service.saveWarehouseNum(nowdate,"2");//ncdd001取1200在库
} catch (Exception e) {
("ncdd003 is wrong",e);
if(this.getUserId()==null&&jobtask!=null){
saveJobFinishRecord(jobtask,"autoexecute");
("取数据任务任务结束");
@SuppressWarnings("unchecked")
private void findManufacture(int finishdate,String frequency,Connection con){
("取数ncdd003数据开始");
PreparedStatement preparedStatement =
ResultSet resultSet =
String sql = "select hed.VHCONO,hed.VHWHLO,hed.VHWHSL,hed.VHFIDT,pce.MSSLDS,hed.VHPROJ,hed.VHMFNO,hed.VHITNO,mas.MMITDS,tab.CTTX40,hed.VHWCLN,hed.VHORQT,mat.VMMTNO,mas.MMITDS,mas.MMUNMS,mas.MMITTY,hed.VHFACI,hed.VHPRNO,mat.VMSPMT,mat.VMMSEQ,mat.VMREQT,mat.VMRPQT,hed.VHELNO " +
"from S6513EF0.MVXCDTALIV.MWOHED hed " +
"join S6513EF0.MVXCDTALIV.MITPCE pce on hed.VHCONO=pce.MSCONO and hed.VHWHLO = pce.MSWHLO and hed.VHWHSL = pce.MSWHSL " +
"join S6513EF0.MVXCDTALIV.MITMAS mas on hed.VHCONO=mas.MMCONO and mas.MMITNO = hed.VHITNO " +
"join S6513EF0.MVXCDTALIV.CSYTAB tab on hed.VHCONO=tab.CTCONO and mas.MMITCL = tab.CTSTKY " +
"join S6513EF0.MVXCDTALIV.MWOMAT mat on hed.VHCONO=mat.VMCONO and hed.VHFACI = mat.VMFACI and hed.VHPRNO = mat.VMPRNO and hed.VHMFNO = mat.VMMFNO " + //and mat.VMMTNO = mas.MMITNO
"where hed.VHCONO = 65 and hed.VHWHST & '80' and hed.VHFIDT = ? and hed.VHELNO = ? and tab.CTSTCO='ITCL' ";// and tab.CTTX40 = 'MDCM'
preparedStatement = con.prepareStatement(sql);
preparedStatement.setInt(1, finishdate);
preparedStatement.setString(2, frequency);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
long vhcono = resultSet.getLong(1);
String vhwhlo = resultSet.getString(2).trim();
String vhwhsl = resultSet.getString(3).trim();
long vhfidt = resultSet.getLong(4);
String msslds = resultSet.getString(5).trim();//LOCATION NAME
String vhproj = resultSet.getString(6).trim();//MFG INST NO
long vhmfno = resultSet.getLong(7);//MO NO
String vhitno = resultSet.getString(8).trim();//ITEM NO
String masmmitds = resultSet.getString(9).trim();//ITEM NAME
String cttx40 = resultSet.getString(10).trim();//dept
String vhwcln = resultSet.getString(11).trim();//plan line
double vhorqt
=resultSet.getDouble(12);//plan qty
String vmmtno = resultSet.getString(13).trim();//component no
String matmmitds = resultSet.getString(14).trim();//component name
String mmunms = resultSet.getString(15).trim();//um
String mmitty = resultSet.getString(16).trim();
String vhfaci = resultSet.getString(17).trim();//Facility
String vhprno = resultSet.getString(18).trim();//产品号码
Long vmspmt = resultSet.getLong(19);// issue method
long vmmseq = resultSet.getLong(20);//seq no
double vmreqt= resultSet.getDouble(21);//wreqt
double vmrpqt
= resultSet.getDouble(22);
String vhelno = resultSet.getString(23).trim();//1.shift 2.time table
double wreqt = vmreqt -//required qty
if(!mmitty.equals("01")&&!mmitty.equals("02")){
List&Mpdope& mpdopes = hibernateTemplate.find("from Mpdope ope where ope.id.pocono = 65 and ope.id.pofaci = ? and ope.id.poprno = ?",vhfaci,vhprno);
if(mpdopes.isEmpty()==false){
Mpdope mpdope = mpdopes.get(0);
String poplgr = mpdope.getId().getPoplgr();
List&Mpdwct& mpdwcts = hibernateTemplate.find("from Mpdwct wct where wct.id.ppcono = 65 and wct.id.ppfaci = ? and wct.id.ppplgr = ?",vhfaci,poplgr);
if(mpdwcts.isEmpty()==false){
vhwhsl = mpdwcts.get(0).getId().getPpwhsl().trim();
List&Mitmas& mitmass = hibernateTemplate.find("from Mitmas mas where mas.id.mmcono = 65 and mas.id.mmitno = ?",vmmtno);
if(mitmass.isEmpty()==false){
= mitmass.get(0).getId();
matmmitds = mitmasId.getMmitds().trim();
mmunms = mitmasId.getMmunms().trim();
mmitty = mitmasId.getMmitty().trim();
String shift = "";
String timeTable="";
//保存数据到 NCDD003
Ncdd003 ncdd003 = new Ncdd003();
Ncdd003Id ncdd003Id = new Ncdd003Id();
ncdd003Id.setW10010(vhcono);
ncdd003Id.setW10020(vhwhlo);
ncdd003Id.setW10030(vhwhsl);
ncdd003Id.setW10050(vhfidt);
ncdd003Id.setW10080(vhproj);
if(vhelno.trim().length()==2){
shift = vhelno.substring(0, 1);
timeTable = vhelno.substring(1,2);
ncdd003Id.setW10060(shift);
ncdd003Id.setW10070(timeTable);
ncdd003.setW10040(msslds);
ncdd003.setW10090(vhmfno);
ncdd003.setW10100(vhitno);
ncdd003.setW10110(masmmitds);
ncdd003.setW10140(cttx40);
ncdd003.setW10120(vhwcln);
ncdd003.setW10130(vhorqt);
ncdd003Id.setW10200(vmmtno);
ncdd003.setW10210(matmmitds);
ncdd003.setW10220(mmunms);
ncdd003.setW10280(vhwhsl);
ncdd003.setW10290(vmspmt);
ncdd003.setW10300(vmmseq);
if(!timeTable.equals("1")){
ncdd003.setW10230(wreqt);
ncdd003.setW10320("");
ncdd003.setW);
ncdd003.setW10340("");
ncdd003.setW);
ncdd003.setW10360("");
ncdd003.setW);
ncdd003.setW10380("");
ncdd003.setW);
ncdd003.setW10400("");
ncdd003.setW);
ncdd003.setW10420("");
ncdd003.setW);
ncdd003.setW);
ncdd003.setW10450("");
ncdd003.setW10460("");
ncdd003.setW10470("");
ncdd003.setW10480("");
ncdd003.setW10490("1");
ncdd003.setW10500("");
String engineer = SpiltUtil.getMfgnoStr(vhproj);
ncdd003.setW10500(engineer);
ncdd003.setW10510(mmitty);
ncdd003.setId(ncdd003Id);
phibernateTemplate.saveOrUpdate(ncdd003);
phibernateTemplate.merge(ncdd003);
} catch (Exception e) {
logger.error("findManufacture出错", e);
e.printStackTrace();
} finally {
if(resultSet!=null){
resultSet.close();
if(preparedStatement!=null){
preparedStatement.close();
if(con!=null){
con.close();
("取数ncdd003数据结束 ");
} catch (SQLException e) {
logger.error("关闭出错", e);
e.printStackTrace();
//制造指示书查找在库数
@SuppressWarnings({ "unchecked", "rawtypes" })
public void saveManufactureWarehouseNumber(long finishdate){
("查找Ncdd003在库数开始");
List&Ncdd003& ncdd003s= phibernateTemplate.find("from Ncdd003 ncdd003 where ncdd003.id.w10050 = ? and ncdd003.id.w10020 = ?",finishdate,"12");//修改成取12仓库的在库数
String hql = "from Mitloc loc where loc.id.mlwhlo = ? and loc.id.mlitno = ? and loc.id.mlcono = 65 and loc.id.mlwhsl = '1200' ";
for(Ncdd003 ncdd003:ncdd003s){
Ncdd003Id ncdd003Id = ncdd003.getId();
String wareHouse = ncdd003Id.getW10020();
String itemNo = ncdd003Id.getW10200();
List&Mitloc& mlitnos = hibernateTemplate.find(hql,wareHouse,itemNo);
List loclist = new ArrayList();
for(Mitloc mitLoc:mlitnos){
MitlocId mitlocId = mitLoc.getId();
String mlbano = mitlocId.getMlbano();
double mlstqt = mitlocId.getMlstqt();
loclist.add(mlbano);
loclist.add(mlstqt);
int locsize = loclist.size();
if(locsize==2){
ncdd003.setW10320((String)loclist.get(0));
ncdd003.setW10330((Double)loclist.get(1));
phibernateTemplate.update(ncdd003);
if(locsize==4){
ncdd003.setW10320((String)loclist.get(0));
ncdd003.setW10330((Double)loclist.get(1));
ncdd003.setW10340((String)loclist.get(2));
ncdd003.setW10350((Double)loclist.get(3));
phibernateTemplate.update(ncdd003);
if(locsize==6){
ncdd003.setW10320((String)loclist.get(0));
ncdd003.setW10330((Double)loclist.get(1));
ncdd003.setW10340((String)loclist.get(2));
ncdd003.setW10350((Double)loclist.get(3));
ncdd003.setW10360((String)loclist.get(4));
ncdd003.setW10370((Double)loclist.get(5));
phibernateTemplate.update(ncdd003);
if(locsize==8){
ncdd003.setW10320((String)loclist.get(0));
ncdd003.setW10330((Double)loclist.get(1));
ncdd003.setW10340((String)loclist.get(2));
ncdd003.setW10350((Double)loclist.get(3));
ncdd003.setW10360((String)loclist.get(4));
ncdd003.setW10370((Double)loclist.get(5));
ncdd003.setW10380((String)loclist.get(6));
ncdd003.setW10390((Double)loclist.get(7));
phibernateTemplate.update(ncdd003);
if(locsize==10){
ncdd003.setW10320((String)loclist.get(0));
ncdd003.setW10330((Double)loclist.get(1));
ncdd003.setW10340((String)loclist.get(2));
ncdd003.setW10350((Double)loclist.get(3));
ncdd003.setW10360((String)loclist.get(4));
ncdd003.setW10370((Double)loclist.get(5));
ncdd003.setW10380((String)loclist.get(6));
ncdd003.setW10390((Double)loclist.get(7));
ncdd003.setW10400((String)loclist.get(8));
ncdd003.setW10410((Double)loclist.get(9));
phibernateTemplate.update(ncdd003);
if(locsize==12){
ncdd003.setW10320((String)loclist.get(0));
ncdd003.setW10330((Double)loclist.get(1));
ncdd003.setW10340((String)loclist.get(2));
ncdd003.setW10350((Double)loclist.get(3));
ncdd003.setW10360((String)loclist.get(4));
ncdd003.setW10370((Double)loclist.get(5));
ncdd003.setW10380((String)loclist.get(6));
ncdd003.setW10390((Double)loclist.get(7));
ncdd003.setW10400((String)loclist.get(8));
ncdd003.setW10410((Double)loclist.get(9));
ncdd003.setW10420((String)loclist.get(10));
ncdd003.setW10430((Double)loclist.get(11));
phibernateTemplate.update(ncdd003);
("查找Ncdd003在库数结束");
public Jobtask saveJobBeginRecord(String userId){
Jobtask jobtask = new Jobtask();
String beginDate = jobDateFormat.format(Calendar.getInstance());
jobtask.setJbegdt(beginDate);
jobtask.setJfindt("");
jobtask.setJstate(1);
jobtask.setExecutor(userId);
phibernateTemplate.save(jobtask);
phibernateTemplate.flush();
public void saveJobFinishRecord(Jobtask jobtask,String userId){
String finishDate = jobDateFormat.format(Calendar.getInstance());
jobtask.setJfindt(finishDate);
jobtask.setJstate(2);
jobtask.setExecutor(userId);
phibernateTemplate.update(jobtask);
@SuppressWarnings("unchecked")
private void changeManufacture(int finishdate,String frequency,Connection con,String mfgNoFrom,String mfgNoTo){
PreparedStatement preparedStatement =
ResultSet resultSet =
String sql = "select hed.VHCONO,hed.VHWHLO,hed.VHWHSL,hed.VHFIDT,pce.MSSLDS,hed.VHPROJ,hed.VHMFNO,hed.VHITNO,mas.MMITDS,tab.CTTX40,hed.VHWCLN,hed.VHORQT,mat.VMMTNO,mas.MMITDS,mas.MMUNMS,mas.MMITTY,hed.VHFACI,hed.VHPRNO,mat.VMSPMT,mat.VMMSEQ,mat.VMREQT,mat.VMRPQT,hed.VHELNO " +
"from S6513EF0.MVXCDTALIV.MWOHED hed " +
"join S6513EF0.MVXCDTALIV.MITPCE pce on hed.VHCONO=pce.MSCONO and hed.VHWHLO = pce.MSWHLO and hed.VHWHSL = pce.MSWHSL " +
"join S6513EF0.MVXCDTALIV.MITMAS mas on hed.VHCONO=mas.MMCONO and mas.MMITNO = hed.VHITNO " +
"join S6513EF0.MVXCDTALIV.CSYTAB tab on hed.VHCONO=tab.CTCONO and mas.MMITCL = tab.CTSTKY " +
"join S6513EF0.MVXCDTALIV.MWOMAT mat on hed.VHCONO=mat.VMCONO and hed.VHFACI = mat.VMFACI and hed.VHPRNO = mat.VMPRNO and hed.VHMFNO = mat.VMMFNO " + //and mat.VMMTNO = mas.MMITNO
"where hed.VHCONO = 65 and hed.VHWHST & '80' and hed.VHPROJ between ? and ? and hed.VHFIDT = ? and hed.VHELNO = ? and tab.CTSTCO='ITCL' ";// and tab.CTTX40 = 'MDCM'
preparedStatement = con.prepareStatement(sql);
preparedStatement.setString(1, mfgNoFrom);
preparedStatement.setString(2, mfgNoTo);
preparedStatement.setInt(3, finishdate);
preparedStatement.setString(4, frequency);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
long vhcono = resultSet.getLong(1);
String vhwhlo = resultSet.getString(2).trim();
String vhwhsl = resultSet.getString(3).trim();
long vhfidt = resultSet.getLong(4);
String msslds = resultSet.getString(5).trim();//LOCATION NAME
String vhproj = resultSet.getString(6).trim();//MFG INST NO
long vhmfno = resultSet.getLong(7);//MO NO
String vhitno = resultSet.getString(8).trim();//ITEM NO
String masmmitds = resultSet.getString(9).trim();//ITEM NAME
String cttx40 = resultSet.getString(10).trim();//dept
String vhwcln = resultSet.getString(11).trim();//plan line
double vhorqt
=resultSet.getDouble(12);//plan qty
String vmmtno = resultSet.getString(13).trim();//component no
String matmmitds = resultSet.getString(14).trim();//component name
String mmunms = resultSet.getString(15).trim();//um
String mmitty = resultSet.getString(16).trim();
String vhfaci = resultSet.getString(17).trim();//Facility
String vhprno = resultSet.getString(18).trim();//产品号码
Long vmspmt = resultSet.getLong(19);// issue method
long vmmseq = resultSet.getLong(20);//seq no
double vmreqt= resultSet.getDouble(21);//wreqt
double vmrpqt
= resultSet.getDouble(22);
String vhelno = resultSet.getString(23).trim();//1.shift 2.time table
double wreqt = vmreqt -//required qty
if(!mmitty.equals("01")&&!mmitty.equals("02")){
List&Mpdope& mpdopes = hibernateTemplate.find("from Mpdope ope where ope.id.pocono = 65 and ope.id.pofaci = ? and ope.id.poprno = ?",vhfaci,vhprno);
if(mpdopes.isEmpty()==false){
Mpdope mpdope = mpdopes.get(0);
String poplgr = mpdope.getId().getPoplgr();
List&Mpdwct& mpdwcts = hibernateTemplate.find("from Mpdwct wct where wct.id.ppcono = 65 and wct.id.ppfaci = ? and wct.id.ppplgr = ?",vhfaci,poplgr);
if(mpdwcts.isEmpty()==false){
vhwhsl = mpdwcts.get(0).getId().getPpwhsl().trim();
List&Mitmas& mitmass = hibernateTemplate.find("from Mitmas mas where mas.id.mmcono = 65 and mas.id.mmitno = ?",vmmtno);
if(mitmass.isEmpty()==false){
matmmitds = mitmass.get(0).getId().getMmitds();
mmunms = mitmass.get(0).getId().getMmunms();
String shift = "";
String timeTable="";
//保存数据到 ncdd004
Ncdd004 ncdd004 = new Ncdd004();
Ncdd004Id ncdd004Id = new Ncdd004Id();
ncdd004Id.setW10010(vhcono);
ncdd004Id.setW10020(vhwhlo);
ncdd004Id.setW10030(vhwhsl);
ncdd004Id.setW10050(vhfidt);
ncdd004Id.setW10080(vhproj);
if(vhelno.trim().length()==2){
shift = vhelno.substring(0, 1);
timeTable = vhelno.substring(1,2);
ncdd004Id.setW10060(shift);
ncdd004Id.setW10070(timeTable);
ncdd004.setW10040(msslds);
ncdd004.setW10090(vhmfno);
ncdd004.setW10100(vhitno);
ncdd004.setW10110(masmmitds);
ncdd004.setW10140(cttx40);
ncdd004.setW10120(vhwcln);
ncdd004.setW10130(vhorqt);
ncdd004Id.setW10200(vmmtno);
ncdd004.setW10210(matmmitds);
ncdd004.setW10220(mmunms);
ncdd004.setW10280(vhwhsl);
ncdd004.setW10290(vmspmt);
ncdd004.setW10300(vmmseq);
if(!timeTable.equals("1")){
ncdd004.setW10230(wreqt);
ncdd004.setW10320("");
ncdd004.setW);
ncdd004.setW10340("");
ncdd004.setW);
ncdd004.setW10360("");
ncdd004.setW);
ncdd004.setW10380("");
ncdd004.setW);
ncdd004.setW10400("");
ncdd004.setW);
ncdd004.setW10420("");
ncdd004.setW);
ncdd004.setW);
ncdd004.setW10450("");
ncdd004.setW10460("");
ncdd004.setW10470("");
ncdd004.setW10480("");
ncdd004.setW10490("");
ncdd004.setId(ncdd004Id);
phibernateTemplate.saveOrUpdate(ncdd004);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(resultSet!=null){
resultSet.close();
if(preparedStatement!=null){
preparedStatement.close();
if(con!=null){
con.close();
} catch (SQLException e) {
logger.error("changeManufacture出错", e);
e.printStackTrace();
public void changeDates(int finishdate,String frequency,String mfgNoFrom,String mfgNoTo) {
String mfgNoStrFrom = SpiltUtil.getMfgnoStr(mfgNoFrom);
String mfgNoStrtTo = SpiltUtil.getMfgnoStr(mfgNoTo);
int mfgNoNumFrom = SpiltUtil.getMfgnoNum(mfgNoFrom);
int mfgNoNumTo = SpiltUtil.getMfgnoNum(mfgNoTo);
if(!mfgNoStrFrom.equals(mfgNoStrtTo)){
throw new APPException("制造指示书前两号不一样,请从新确认");
if(mfgNoNumFrom&mfgNoNumTo){
throw new APPException("制造指示书号要右边大于左边");
Connection con = ConnManage.getConnection();
this.changeManufacture(finishdate, frequency, con, mfgNoFrom,mfgNoTo);
@SuppressWarnings("unchecked")
public void saveItemType() {
List&Ncdd001& ncdd001s = phibernateTemplate.find("from Ncdd001 ncdd001");
for(Ncdd001 ncdd001:ncdd001s){
String itemno = ncdd001.getId().getDd0104();
List&Mitmas& mitmass = hibernateTemplate.find("from Mitmas mas where mas.id.mmcono = 65 and mas.id.mmitno = ?",itemno);
if(mitmass.isEmpty()==false){
String itemtype = mitmass.get(0).getId().getMmitty();
ncdd001.setDd0300(itemtype);
phibernateTemplate.saveOrUpdate(ncdd001);
问题补充:郭伟198711 写道chenxiang105 说的没错 你的数据量比较大,而且代码中没有发现导致溢出的地方& 应该是虚拟机的内存设置太小了 具体设置在tomcat下面jdk中
我在网上找了几个内存设置,做法都不一样,能否给个例子,服务器的内存是4G,谢谢
问题补充:chenxiang105 写道看看你的那个resultSet& 出来有多少数据, 其实用个小分页就解决了 应该
手动分页那种. 自己控制每次n条 从Xn条到(X+1)n条
引用
谢谢,数据量大约是每天5000多条,我的做法是用定时器每天都去数据库拿数据然后保存在另一个数据库中,再做些处理,你建议是做成分页的形式吗?感谢你的回答
不如 升级tomcat版本吧
Eclipse中选择
window-&preferences-&myeclipse-&servers-&tomcat-&jdk
里面有个Optional java vm arguments
在这里设置
-Xms500m -Xmx500m
xms标识最小内存& xmx标识最大,根据你服务器的情况自己设置下吧
chenxiang105 说的没错 你的数据量比较大,而且代码中没有发现导致溢出的地方& 应该是虚拟机的内存设置太小了 具体设置在tomcat下面jdk中
看看你的那个resultSet& 出来有多少数据, 其实用个小分页就解决了 应该
手动分页那种. 自己控制每次n条 从Xn条到(X+1)n条
虚拟机的内存不足造成的. 也就是跑到一半就异常了
解决办法一般有两种. 第一是加大虚拟机内存 加大到足已应对请求
第二种是. 改程序 把你的数据切割成多批量& 一批一批的处理数据
建议你使用后者. 你这样跑整个表的数据的话 数据太大内存也就会同比增长了。
内存溢出 你调用的方法执行不了报错了& 具体要查原因的话还要看你的代码
加大虚拟机内存。具体是myEclipse ---&preference---&tomcat--&jdk,进行设定就OK了
堆内存溢出& 没有代码 想帮你也没办法呀
已解决问题
未解决问题}

我要回帖

更多关于 java.lang.class 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信