package se.kodapan.osm.sweden; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import se.kodapan.osm.domain.root.Root; import se.kodapan.osm.parser.xml.instantiated.InstantiatedOsmXmlParser; import java.io.*; import java.util.zip.GZIPInputStream; /** * @author kalle * @since 2013-09-25 6:19 PM */ public class LoadSweden { private static Logger log = LoggerFactory.getLogger(LoadSweden.class); public static void main(String[] args) throws Exception { ObjectInputStream ois = new ObjectInputStream(new GZIPInputStream(new FileInputStream(new File("target/sweden.root.raw.gz")))); Root root = (Root)ois.readObject(); ois.close(); memUse(); System.currentTimeMillis(); } public static void factory() throws Exception { final InstantiatedOsmXmlParser parser = new InstantiatedOsmXmlParser(); Thread thread = new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(10000); log.debug(parser.getRoot().getNodes().size() + " nodes, " + parser.getRoot().getWays().size() + " ways, " + parser.getRoot().getRelations().size() + " relations."); } catch (Exception e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } } } }); thread.setDaemon(true); thread.start(); parser.parse(new InputStreamReader(new FileInputStream("/tmp/sweden-latest.osm"), "UTF8")); memUse(); System.currentTimeMillis(); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("target/sweden.root.raw"))); oos.writeObject(parser.getRoot()); oos.close(); } private static void memUse() { Runtime rt = Runtime.getRuntime(); System.gc(); long usedMB = (rt.totalMemory() - rt.freeMemory()) / 1024 / 1024; System.out.println("MB usage " + usedMB); } }