最近在把全套程式移植上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來用,記憶體都會省很多!
- Jun 02 Mon 2008 16:33
在64bit Ubuntu上節約資源:執行32bit程式與fastutil
全站熱搜
留言列表
發表留言