当前位置:  技术问答>java相关

溢出的问题,紧急!!!高手快来呀!!!

    来源: 互联网  发布时间:2015-08-27

    本文导语:  现在有这样个程序,运行一段时间后就会出现溢出的问题,请问该如何解决. import aiismg.jcmppapi.CMPPAPI; import aiismg.jcmppapi.CMPPDeliverResp; import java.io.*; import java.net.*; public class RecvSM { //接收短信         public static v...

现在有这样个程序,运行一段时间后就会出现溢出的问题,请问该如何解决.
import aiismg.jcmppapi.CMPPAPI;
import aiismg.jcmppapi.CMPPDeliverResp;
import java.io.*;
import java.net.*;

public class RecvSM { //接收短信
        public static void main( String argv[] )
        {
                int    nTimeout = 5;                                 //每次超时时间(秒)
                int    nSleep = 1;                                 //每次等待时间(秒)
                CMPPAPI pCMPPAPI = new CMPPAPI();
                while(true)
                {
                        try
                        {
                           Thread.sleep(nSleep*1000);
                        } catch(Exception e){}
                        CMPPDeliverResp theDeliverResp = new CMPPDeliverResp();
                        if( pCMPPAPI.CMPPDeliver( nTimeout, theDeliverResp ) != 0 ) {
                                if(pCMPPAPI.GetErrCode()==0){
                                   System.out.println("waiting for sms!!!");
                                }else{
                                  System.out.println("receive fail");
                                 }
                                continue;//如果出错,就接收下一条短信
                        }
                        (new TransactTread(theDeliverResp)).start();//启动线程处理业务
                }
        }
}
class TransactTread extends Thread{
        CMPPDeliverResp dr;
        public TransactTread(CMPPDeliverResp _dr)//构造函数
        {
                dr = _dr;
        }
        public void run()
        {
                try {
                        //进行短信处理,短信内容 
                     }
                } catch(Exception e){  }
        }
}
这里面出现溢出主要是运行while(true)那里发生的,请问是什么问题,出错的信息为
Exception in thread "main" java.lang.OutOfMemoryError
        
请高手帮忙解决,分一定给!!!

|
不断的new Thread会造成这种问题,其实只要换种设计模式可以达到同样的功能。

import java.util.*;
class TransactTread extends Thread{
        private LinkedList deliverRespList = new LinkedList ();

        
        public TransactTread()//构造函数
        {
                        }
        public void run()
        {
            CMPPDeliverResp dr=null;
            for(;;) {
                synchronized(deliverRespList) {
                    while( deliverRespList.size == 0 )
                       deliverRespList.wait();
                    dr = (CMPPDeliverResp)deliverRespList.removeFirst();
                }
                try {
                        //进行短信处理,短信内容 
                     }
                } catch(Exception e){  }
        
            }
       }
       public void addDeliverResp(CMPPDeliverResp dr) {
            synchronized(deliverRespList) {
                deliverRespList.add(dr);
                try{  
                    deliverRespList.notify();
                }catch(Exception e ) {}                    
            }                
       }
}

在主类中定义成员 TransactTread transactTread = new TransactTread ();
并把它启动。

把你主程序中的
(new TransactTread(theDeliverResp)).start();//启动线程处理业务

换成transactTread.addDeliverResp(theDeliverResp);

|
no problem

zhengy@necas.nec.co.jp

|
在while(true)里面不断地
CMPPDeliverResp theDeliverResp = new CMPPDeliverResp();
new TransactTread(theDeliverResp)).start();
怎么可能不溢出??
while(true)应该写到线程的run里面,而不是main方法里面
你参考一下线程的用法

|
你把
CMPPDeliverResp theDeliverResp = new CMPPDeliverResp();
(new TransactTread(theDeliverResp)).start();
两句拿到循环外面试试

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • windows堆栈溢出利用的七种方式
  • java内存溢出示例(堆溢出、栈溢出)
  • LINUX下的缓冲区溢出和WINDOWS下的缓冲区溢出都有什么区别?
  • 求教:loongson2f 2.6.33 溢出中断
  • Linux如何捕获栈溢出?
  • 数据库 iis7站长之家
  • jvm内存溢出解决方法(jvm内存溢出怎么解决)
  • linux下缓冲区溢出的shellcode怎么写啊~~~
  • 求教:一进程执行过程中被同一外部中断程序大量反复中断会不会引起内核栈溢出?
  • 如何捕获磁盘空间溢出错误?
  • 多浏览器支持CSS 容器内容超出(溢出)支持自动换行
  • tomcat6.0 /7.0安装版内存溢出设置方法
  • 请问溢出mmap()分配的共享空间要怎么办??
  • ◎◎ --为什么时间值会倒退?是因为long型溢出了吗?
  • 小技巧处理div内容溢出
  • IBM HTTP Server 远程溢出漏洞
  • fedora core 2 对于缓冲区溢出攻击有保护措施么?程序能不能ret回数据段(堆栈段)执行?
  • 回调函数中疑似内存溢出,GTK+
  • 使用checked语句防止数据溢出的解决方法
  • MySQL整型数据溢出的解决方法
  • 用css截取字符的几种方法详解(css排版隐藏溢出文本)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3