如何测试能判断Java代码,是否存在内存泄漏的问题?

我自己封装了一个jdbc的包

如何能判断出,我这段代码是否存在内漏泄漏的情况

 /**
 * oracle jdbc
 * @author rgy
 *
 */
public class OracleJdbc {

    private Connection conn;
    private ResultSet rs;
    private ResultSetMetaData md;
    private PreparedStatement ps;
    private Properties prop;
    private String url;
    private String user;
    private String psw;
    private List<Map<String,Object>> list;
    private Map<String,Object> map;
    private Integer flg;
    private FileInputStream fis;
    private String path = "src/orcl.properties";

    //测试代码
    public static void main(String[] args)  {
        OracleJdbc oracle = new OracleJdbc();
        try {
            String sql = "select * from GC_EXAMTYPE t where t.examtype_id= ?  or examtype_id=?";
            List<Map<String, Object>> query = oracle.query(sql,5,6);
            System.out.println(query);
            String inser_sql = "insert into test (id, name) values (?, ?)";
            Integer add_flg = oracle.add(inser_sql, 2,2);
            System.out.println(add_flg);
            String mod_sql = "update test set name = ? where id=?";
            Integer mod_flg =oracle.mod(mod_sql, 2,1);
            System.out.println(mod_flg);
            String del_sql = "delete test where id=?";
            Integer del_flg =oracle.del(del_sql, 1);
            System.out.println(del_flg);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 连接数据库
     * @throws Exception
     */
    public void open(){
        try {
            fis = new FileInputStream(path);
            prop = new Properties();
            prop.load(fis);
            url = prop.getProperty("db.url");
            user = prop.getProperty("db.user");
            psw = prop.getProperty("db.password");
            Class.forName(prop.getProperty("driverClass"));
            conn = DriverManager.getConnection(url, user, psw);
        } catch (IOException | ClassNotFoundException | SQLException e) {
            close(conn,ps,rs);
        }
    }
    /**
     * 关闭连接
     */
    public void close(Connection conn,PreparedStatement ps,ResultSet rs) {
        try {
            if(ps!=null) ps.close();
            if(rs!=null) rs.close();
            if(conn!=null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
    /**
     * 执行dml语句
     * @param sql dml语句
     * @param objs 参数
     * @return 0失败 1成功
     * @throws SQLException sql异常
     */
    public int dml(String sql, Object... objs) {
        open();
        try {
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < objs.length; i++) {
                ps.setObject(i+1, objs[i]);
            }
            flg = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            close(conn,ps,rs);
        }
        return flg;
    }
    /**
     * 执行查询语句
     * @param sql 查询语句
     * @param objs 参数
     * @return 查询结果
     */
    public List<Map<String,Object>> query(String sql,Object...objs){
        open();
        list = new ArrayList<>();
        try {
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < objs.length; i++) {
                ps.setObject(i+1, objs[i]);
            }
            rs = ps.executeQuery();
            md = rs.getMetaData();
            while (rs.next()) {
                map = new HashMap<>();
                for (int i = 1; i <= md.getColumnCount(); i++) {
                    String key = md.getColumnName(i);
                    Object value = rs.getObject(i);
                    map.put(key, value);
                }
                list.add(map);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            close(conn,ps,rs);
        }
        return list;
    }
    /**
     * 添加数据
     * @param sql 添加语句
     * @param objs 参数
     * @return 0失败 1成功
     */
    public int add(String sql,Object...objs) {
        flg = dml(sql, objs);
        return flg;
    }
    /**
     * 修改数据
     * @param sql 修改语句
     * @param objs 参数
     * @return 0失败 1成功
     * @throws SQLException sql异常
     */
    public int mod(String sql,Object...objs){
        flg = dml(sql, objs);
        return flg;
    }
    /**
     * 删除数据
     * @param sql 删除语句
     * @param objs 参数
     * @return 0失败 1成功
     */
    public int del(String sql,Object...objs){
        flg = dml(sql, objs);
        return flg;
    }
}

3个回答

内存泄漏,其实说简单点,就是手机内存都是有限的,当你的应用切出界面了,或者通过别的方式方法不在手机当前界面了,系统有个垃圾回收机制,会把你的应用中不同的页面或者service服务当做垃圾回收,但是如果你的应用中写了有关于网络加载的代码,系统就不会消除你的页面,导致该消除没消除,你的那个代码页面就会占用系统的内存,系统内存被占用的多了,就卡,导致死机。。。。说的不好 见谅

代码是否健壮和内存泄漏有什么关系?
你去看一下,什么叫做内存泄漏就知道你自己的代码写得好不好了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何测试是否存在内存泄漏
如何测试内存泄漏 命令: jsp jmap -histo:live [进程号] &gt; [文件路径] 命令解释: jps:查看当前代码的进程号; jmap -histo:live [进程号] &gt; [文件路径]:讲得到的信息放到某一个文件下,运行后打开此文件,查看还有多少个实例。 具体实现: 在测试代码中加上一句 Thread.sleep(1000); 并在这个地方打上一个断点,...
如何判断网址是否存在,能打开?
例如:我想判断www.csdn.com 这地址是否能打开~
如何测试程序是否存在内存泄漏的问题?
今天面试被问到了,懵了。rn用什么工具或什么方法?
java代码判断本地是否存在D盘
我用流操作在本地生成一个文件,但是不知道本地是否有d盘n怎么判断本地是否有d盘,n不是判断是否有这个文件,然后不存在就创建。
是否还存在内存泄漏
[code=C/C++]rn#includernclass TSrnrnpublic:rn TS();rn ~TS();rn void CoutNumber(void);rn void InitTS(void);rnprivate:rn int a;rn int b;rn int **q;rn;rnrnTS::TS()rnrn std::cout<<"请输入需要的矩阵行列"<>a>>b;rn q = new int *[a];rn for(int i=0;i>*(*(q+e)+f);rn rn std::cout<
如何使用GDB检查程序是否存在内存泄漏?
我现在正在开发一个大的项目,其中涉及到大量的内存申请和释放,请问各位,gdb是否可以用来检查程序是否存在内存泄漏?如何检查?如果不能,是否有其它工具可以检查?先谢了!
如何判断数据库是否存在?
用一条SQL语句确定将要创建的数据库是否已有同名数据库,不要特定某个DBMS才适用
如何判断窗体是否存在?
如题!比如窗体名字是Name,如何判断其是否存在?
如何判断对象是否存在
void CVcQfCtrl::SetQs1(const VARIANT FAR& newValue) rnrn // TODO: Add your property handler herern m_Qs1=newValue;rnrn 要用newValue传递一个对象,如何判断该对象是否存在?rnrnrn SetModifiedFlag();rn
如何判断一个对象是否存在?
我需要在程序中动态打开窗口,如Open(lw_win,ls_winname),rnls_winname是在运行时从数据库中得到的。rn问题在于:如何判断ls_winname对应的窗口在pbl中是否存在呢?rn
如何判断文件是否存在
如何判断文件是否存在,我要判断目录文件夹的某个文件是否存在,如果存在则删除,不存在则什么也不做,该如何实现?
如何判断对象是否存在?
一页分两贞rnrn判断rnparent.A.form1.listnow.valuernrn是否存在,如果存在,kk=1,否则kk=2rnrn不存在的情况可能是 parent.A贞没有被载入或者没有给listnow赋值rnrn我用if(parent.A.form1.listnow.value!="")rnkk=1;rnelsernkk=2;rnrn这样子不行,还是出错误提示...
如何判断存储过程是否存在?
存储过程:sp_getcorprn如何判断是否存在,如果不存在,则创建存储过程
如何判断文本框控件是否存在
前端代码如下:rnrn我在后台如何判断是否存在 id='b1' 的input?
如何判断字段是否存在?
如何判断?
如何判断图片是否存在
如题,我有一个下拉框,item一次为“男生图像”,“女生图像”,“人妖图像”。rn再用一个image来显示图像,而我只有男生图像.jpg,女生图像.jpg,默认图像.jpg。rn我用的后台程序是rn[code=C#]rnthis.image1.imageurl = DDLimage+".jpg";rn[/code]rnrn而我希望选人妖图像的时候,由于没有这个名字的图像,用默认头像来代替,所以怎样判断这个图像是否存在,并替换呢?
如何判断临时表是否存在?
创建了临时表 #t1 ,语句是create table #t1(id int,name1 varchar(100)) ,想判断它是否存在,用这样的语句不起作用 if object_id('#t1') is not null 该如何写?
如何判断函数是否存在
在javascript中我在执行submit()之前,想先判断页面中是否存在函数 preSubmit() ,如果存在则先执行 preSubmit(),再submit();否则直接submit().rn问题是判断preSubmit()函数是否存在该怎么写呢?希望得到各位帮助
如何判断key是否存在
我要读取一个数据库里的数据 其中比如有一个key 叫 abc,但是有时候我读到的 里面是不存在abc这个key的,有时候是有的,那么我就得判断 key是否存在,请问该如何判断呢
如何判断文件夹是否存在?
这个代码是直接创建文件夹,我想弄个判断,就是如果文件夹存在就不创建,如果不存在就创建。rn另外想问大家一个生成静态的问题,就是如果每次生成一个新闻内容页,就创建一次文件夹,是否会很费资源?rn[code=HTML]<%rnd = Now()rny = Year(Now)rnm = Right("0" & Month(Now), 2)rnrnfolder = ""&y&""&m&"" rnset fso = server.CreateObject("scripting.filesystemobject") rnfso.createfolder(server.MapPath(".\"&folder&"")) rnresponse.Write("文件夹创建成功") rn%> [/code]rn
如何判断数据库表是否存在?
在delphi程序的sql语句中,select * from之后的表名是一个变量,请问如何判断该表是否存在?rn说明:我用的是oracle数据库.
如何判断控件是否存在?
用load在程序中动态的增加控件,因为有大量的控件都是这样load的,而且,其间还可能将某些load后的控件再销毁,现在如何判断某个控件是否存在?rnrn顺便问一下:如何销毁一个动态增加的控件(就是不用它了)?rnrn比如:rn在load image(3)前,怎样检查是否已经load了Image(3)?rnrn怎样销毁Image(3)呢?
如何判断 索引 是否存在!
数据库 sql server 2000 rn想在建立 或 删除 索引 前 判断 索引是否 存在!!!rn如何实现呢?
如何判断目标文件是否存在?
比如我先判断c:\temp\1_1.txt 这个文件是否存在?rn如果存在就打开rnrn'目录下有100个txt文件:1_1.txt 1_2.txt ....1_100.txtrnrn For i=1 to 100rn strTemp="c:\temp\"&"1_"&i&".txt" rn if(?????????)rn Open strTemp For Input As #1rn ...rn Elsern 不做任何事rn End Ifrn rnrn其中?????怎么表达?rn
如何判断窗体是否存在?
在主窗体A里新建了一个线程,在这个线程里又新建了一个窗体B。主窗体A会用Timer记时器去实时的往窗体B里写入一些相关的数据,如在窗体B的Lable里写状态。请问怎么判断窗体B是否已经关闭了。rn或者万一窗体B非法操作自动关闭了,这时是不是相映的窗体A也会关闭,要如果不是的话,那怎么去判断这个因为非法操作而关闭的窗体是否存在呢。
如何判断表是否存在???
CREATE PROCEDURE p_pprnif exists (select * from sysobjects where id = object_id(N'[dbo].[t_bxd]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) rndrop table [dbo].[t_bxd]rnrnrn我用这个后 出现IF语句错误
如何判断线程是否存在?
我要杀一个线程,如何知道这个是在运行,还是已退出?
如何判断文件夹是否存在
如何判断文件夹是否存在?用dir()的缺点是如果文件夹里没有文件,则也会返回空值.
如何判断文件是否存在??
如何判断文件是否存在??
如何判断目录是否存在?
C程序中怎么判断文件目录是否存在,并创建之?(说明:不是判断文件,而是目录)
如何判断用户名是否存在
在一表单中 输入用户名 右边设个按钮 希望在他提交表单前进行判断 判断用户名是否存在 请人指点下 这个应该如何实现 是写脚本吗?谢谢了
如何判断一个 是否存在?
动态添加、删除一个div,如何知道这个div是否存在?
如何判断cookie是否存在?
if(Request.Cookies["MyCookie"].Values["MemName"] != null)rnrnrnrn我用这个判断,如果cookie不存在会抛出异常,会抛出异常 难道只能用try 和catch来判断?
如何判断文件是否存在?
我在一个主窗体中,加一个图片文件,文件的路径的是写在数据库中的,rn取出路径地址,如何判断其文件是否存在.?
如何判断窗口是否存在?
set wshshell=wscript.createobject("wscript.shell") rnwshshell.appactivate "消息框"rnset WshShell = CreateObject("WScript.Shell")rnWScript.Sleep 1000rnWshShell.SendKeys "ESC" rn如何判断"消息框"窗口是否存在,如果存在向窗口发送ESC键,不存在不发送?
如何判断节点是否存在
缺少对象: 'SelectSingleNode(...)' rnrn直接对xml文件操作objXML.SelectSingleNode("/WebDesign/System/HelpContent").text时会出现上述错误,rn打算操作之前判断是否存在某节点,如何判断.
如何判断文件是否存在?
rn如何用语句判断一个文件夹temp里面是否有.ppt文件?
如何判断上传文件是否存在?
在上传页面中,如何判断用记选择的文件是否存在呢?rn有两种情况,一种是用户直接在File里面手输的一个路径,这种情况下,文件很可能是一个不存在的文件.rn另一种情况是,用户选择了文件,但是随即这个文件被删除了,那么当他上传的时候,这个文件实际上是不存在的.rn我的问题是,当用户开始上传的时候,如何判断他选择(或输入)的路径的有效性呢.rnrn说明:肯定是判断客户端的文件是否存在,判断服务器端文件是否存在的方法我已经会了.rnrn还有就是javascript中有File对象,rnfso = new ActiveXObject("Scripting.FileSystemObject");rn可是创建的时候老是出错,是什么原因?能不能不用这种方法判断,因为我不可能要求每个用户都为了我去更改他本机的安全设置.
如何判断窗体是否存在
现有FormMain,FormA,FormB,FormC。其中,FormMain是主窗体。rn隐藏FormMain,显示FormA。rnFormA formA =new FormA();rnformA.Show();rnthis.Hide();rnrn一段时间后,关闭FormA,显示FormBrnFormB formB =new FormB();rnformB.show();rnthis.Close();rnrn一段时间后,关闭FormB,显示FormCrnFormC formC =new FormC();rnformC.show();rnthis.Close();rnrn请问,如何在主窗体(FormMain)判断其他窗体是否存在或显示,谢谢。rnrn
如何判断元素是否存在
sel = this.designEditor.document.selection.createRange();rn// if (typeof(sel)=="undefined") rn sel.pasteHTML(html);rn elsern //sel.pasteHTML(html);rn alert('ok') ;rn rnrn一个编辑器里面的,选中图片或者表格——sel.pasteHTML就会出错rn但是根据typeof判断不出来是否已经选择了元素。
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview