看板 java 關於我們 聯絡資訊
各位前輩大家好 最近在做論文相關程式時一直在想一個問題 由於我的程式需要做讀取文字檔案的動作 檔案內容是非常大量的索引檔 例如 1 1 4 1 1 3 1 2 3 1 2 2 這樣的東西 一次有好幾萬行 我的問題在於不知道下列哪一種方式較省記憶體 1.寫一個讀檔的class,每次生成物件時把此文字檔路徑傳入建構式中 再做讀取檔案的動作,這樣我每讀一個檔案就要產生一個物件 2.一個讀檔的class,裡面有一個method是接收傳入的檔案路徑 再做讀檔,一個物件用到底 我有這個疑問是因為前幾屆學長是用第一種寫法 所以我就想到jvm在回收物件時我們是不知道內部運作的 而讀取的內容檔案又大 第一種方法是否不小心heap就炸了? 不知道有沒有更有效率的讀檔方式 謝謝大家~ -- ( ゚∀゚)你看 我的蒂瑪西亞之力已經長這麼大了 ♡ (  )   (゚д゚ )<.....   | ′.灬  ノヽノ | し ⌒U    < < -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.220.183
PsMonkey:我覺得重點不在讀檔這件事上頭... 03/20 23:53
KOFXI:我覺得你把所有的檔案都讀到記憶體中才會讓heap爆調 03/20 23:56
luoqr:匯到資料庫如何....XD 03/21 00:05
不好意思 第一次在Java版發文@_@ 我一開始有碰到炸掉的問題 不過把jvm記憶體 設到1g後就不會了 SQL應該不會考慮 很多都忘了 XD.. 比較偏好直接讀 ※ 編輯: kurakidream 來自: 140.115.220.183 (03/21 00:11)
coolcomm:用能動態增長的collection存資料還會炸heap嗎? 03/21 00:31
coolcomm:借原po文章問一下 03/21 00:32
NewSpec:可以考慮用Mahout, 其中的陣列和資料類別都做了特殊處理 03/21 00:38
我記得動態增長他的resize好像也是有極限的 不過這部分我就不太熟了QQ ※ 編輯: kurakidream 來自: 140.115.220.183 (03/21 00:48)
swpoker:問一下你讀檔是? 簡單:寫入DB~在去操作資料~結束 03/21 09:06
superlubu:不考慮效能就先讀一次算行數,宣告 array 再讀入資料.. 03/21 10:32
jej:讀檔建索引.. 感覺起來像是搜尋引擎在作的事情 apache lucene 03/21 12:32
jej:X不知道符不符合你的需求~~ 03/21 12:35
swpoker:可以說明一下你要讀檔做什麼嗎?這樣才好判別用什麼方法? 03/21 13:53
是做搜尋沒錯 這些索引檔是已經處理過的 讀出來就是文件向量 Mahout 跟 Lucene 我都會去看看 感謝大家的建議 ※ 編輯: kurakidream 來自: 140.115.130.102 (03/21 15:11)
cyclone350:借題發問... Mahout是哪一部分跟原PO問的有關係 03/21 15:56
cyclone350:最近有看一下mahout,沒印象在讀檔或建立索引的api 03/21 16:00
swpoker:建議去看設計樣式中的物件享元(?)及建構方式 03/21 16:49
NewSpec:我說的是Mahout中為了大資料而特化的資料類別 03/22 01:04