当前位置:  开发笔记 > 编程语言 > 正文

java内存管理

如何解决《java内存管理》经验,为你挑选了0个好方法。

我是一名c ++程序员,在找到JPA之后我正在玩java,这对于我目前的一些应用来说是神派.我从大学开始就没有触及java,我遇到了堆空间不足的问题.我正在使用下面的代码作为jdbc/jpa/lucene不太严重的测试的主要部分,但我继续得到随机的OutOfMemory异常.

        EntityManager em = emf.createEntityManager();
        Query q = em.createQuery("select p from Product p" +
            " where p.productid = :productid");
        Connection con = DriverManager.getConnection("connection string");
        Statement st = con.createStatement();

        IndexWriter writer = new IndexWriter("c:\\temp\\lucene", new StandardAnalyzer(), IndexWriter.MaxFieldLength.LIMITED);

        ResultSet rs = st.executeQuery("select productid from product order by productid");
        while (rs.next()) {
            int productid = rs.getInt("PRODUCTID");
            q.setParameter("productid", productid);
            Product p = (Product)q.getSingleResult();

            writer.addDocument(createDocument(p));
        }

        writer.commit();
        writer.optimize();
        writer.close();

        st.close();
        con.close();

我不会发布所有的createDocument,但它所做的只是实例化一个新的org.apache.lucene.document.Document,并通过add(new Field ...)等添加字段.总共有大约50个字段,大多数都是短的字符串(<32个字符)的长度.

在我的新事物中,有什么东西是完全愚蠢的我正在做(或不做)会导致事情不被GC?

是否有关于java内存管理和滴答GC的最佳实践?

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有