最近在把全套程式移植上64bit Ubuntu當中,可是64bit會有許多記憶體浪費的狀況發生,尤其寫出來的程式都是物件導向的程式,這影響特別巨大,不改跑32bit的程式還真浪費~

要使用32bit Java得安裝:ia32-sun-java6-bin
安裝完後可以再/usr/lib/jvm底下找到它,我是做了一個叫作java32的link以便使用~

# link -s /usr/lib/jvm/ia32-java-6-sun/bin /usr/bin/java32

雖然這樣就能跑32bit的JAVA程式了,不過由於我寫的程式會去抓網頁,會透過DNS去解析網址,可是Ubuntu預設的套件中,32bit軟體透過OS去連結DNS會出錯,這得額外安裝一個套件:lib32nss-mdns
參考自:https://bugs.launchpad.net/ubuntu/+bug/220314

安裝之後就會正常了~不然會出現類似這樣的錯誤訊息:

Exception in thread "main" java.net.UnknownHostException: blog.yam.com
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
    at java.net.Socket.connect(Socket.java:519)
    at java.net.Socket.connect(Socket.java:469)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
    at sun.net.www.http.HttpClient.New(HttpClient.java:306)
    at sun.net.www.http.HttpClient.New(HttpClient.java:323)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:788)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:729)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:654)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:977)
    at stu.WebScanner.Crawler.StringBufferCrawler.CrawlWeb(StringBufferCrawler.java:39)
    at stu.WebScanner.Crawler.StringBufferCrawler.CrawlWeb(StringBufferCrawler.java:20)
    at stu.WebScanner.Crawler.YamAnalysis.Analyze(YamAnalysis.java:15)
    at stu.WebScanner.Crawler.YamAnalysis.main(YamAnalysis.java:86)

出現UnknowHostException,從PlainSocketImpl.java的第177行丟出~

此外~可以使用fastutil:http://fastutil.dsi.unimi.it/
這個套件裏面有一些關於Primitive type的collection套件,如果要用Object與Primitive type(例如int)的HashMap或者 HashSet之類的東西,就不用讓int硬是轉成Integer來用,記憶體都會省很多!
創作者介紹

Next Step...

kuster 發表在 痞客邦 PIXNET 留言(0) 人氣()