簡體   English   中英

java中的內存泄漏?

[英]Memory Leakage in java?

下面的代碼拋出一個 java:out of memory 異常。 我也看到這個問題已經在這里回答了很多次。 看到以前的解決方案我也嘗試過

java -Xmx1024M 你的課堂。

我一直在增加1024M。 我增加到10240M的程度,但仍然拋出相同的異常,另外我的系統掛了幾分鍾。 這個問題還有其他解決方案嗎?

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.Array;
import java.sql.SQLException;
import java.util.Collection;


 class PostgreSQLJDBC 
 {
    public static void main( String args[] ) throws SQLException {
    Connection c = null;
    Statement stmt = null;
    Statement stmt1 = null;  
    int way=1367184;
    int nodecount=7045400;
    int count=0;
    int idarr[]=new int[1367184];
    Long node[][]=new Long[1367184][];
    Long child[][]=new Long[7045400][2000];
    int nodearray[]=new int[7045400];
    int i=0;
    try 
    {
       Class.forName("org.postgresql.Driver");
       c = DriverManager
          .getConnection("jdbc:postgresql://localhost:5432/pr",
          "postgres", "password");
       c.setAutoCommit(true);
       stmt = c.createStatement();
       stmt1 = c.createStatement();
       ResultSet rs = stmt.executeQuery( "SELECT * FROM planet_osm_ways;" );
       ResultSet rs1 = stmt1.executeQuery( "SELECT * FROM 
                                           planet_osm_nodes;");
       while ( rs.next() )
       {
          idarr[i] = rs.getInt("id");
          Array array=rs.getArray("nodes");
          node[i]=(Long[])array.getArray();
          i++;
       }
       i=0;
       /*while(rs1.next())
       {
          nodearray[i]=rs1.getInt("id");
          i++;
       }*/
       rs.close();
       stmt.close();
       c.close();
     } 
    catch ( Exception e ) 
    {
      System.err.println( e.getClass().getName()+": "+ e.getMessage() );
      System.exit(0);
    }

 }

}

有人可以幫忙嗎?

一個 int 是 4 個字節; 一個引用是 4 個字節。

將您分配的所有內存相乘,然后將字節相加。 這是一個簡單的計算。

如果您的應用程序必須擁有所有數據,而您只有有限的 RAM,那么您就無法挑戰物理學。 你必須重新考慮你在做什么。

這是糟糕的代碼,原因有很多。

將該數據封裝到一個對象中並使用一個列表。 只將您需要的東西帶回服務器。

在該 catch 塊中打印堆棧跟蹤。 按照您的方式,您獲得的信息較少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM