--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/db/DatabaseLayer.java 2015/02/15 17:53:36 2307 +++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/db/DatabaseLayer.java 2015/02/16 09:51:24 2308 @@ -27,14 +27,26 @@ Connection conn = DBConnection.getConnection(); Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); + stmt.setFetchSize(Integer.MIN_VALUE); ResultSet res = stmt.executeQuery(sql); List
list = new ArrayList
(2600000);//initial capacity 2.6 mio + Map vejnavne = new HashMap(); + while (res.next()) { + + // Cache String instanserne for vejnavne for at mindske hukommelses forbruget + String dbVejnavn = res.getString(2); + String vejnavn = vejnavne.get(dbVejnavn); + if ( vejnavn == null ) { + vejnavn = dbVejnavn; + vejnavne.put(vejnavn, vejnavn); + } + Address a = new Address(); a.id = res.getInt(1); - a.vejnavn = res.getString(2); + a.vejnavn = vejnavn; a.husnr = res.getInt(3); a.husnrbogstav = res.getString(4); a.kommunekode = res.getInt(5); @@ -82,6 +94,8 @@ Connection conn = DBConnection.getConnection(); Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); + stmt.setFetchSize(Integer.MIN_VALUE); + ResultSet res = stmt.executeQuery(sql); List list = new ArrayList( 350000); //Initial capacity 350K