E作者kurakidream (隨波逐流)
看板java
標題[問題] 物件生成
時間Wed Mar 20 23:50:14 2013
各位前輩大家好
最近在做論文相關程式時一直在想一個問題
由於我的程式需要做讀取文字檔案的動作 檔案內容是非常大量的索引檔
例如
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
1F:推 PsMonkey:我覺得重點不在讀檔這件事上頭... 03/20 23:53
2F:推 KOFXI:我覺得你把所有的檔案都讀到記憶體中才會讓heap爆調 03/20 23:56
3F:→ luoqr:匯到資料庫如何....XD 03/21 00:05
不好意思 第一次在Java版發文@_@
我一開始有碰到炸掉的問題 不過把jvm記憶體 設到1g後就不會了
SQL應該不會考慮 很多都忘了 XD.. 比較偏好直接讀
※ 編輯: kurakidream 來自: 140.115.220.183 (03/21 00:11)
4F:→ coolcomm:用能動態增長的collection存資料還會炸heap嗎? 03/21 00:31
5F:→ coolcomm:借原po文章問一下 03/21 00:32
6F:→ NewSpec:可以考慮用Mahout, 其中的陣列和資料類別都做了特殊處理 03/21 00:38
我記得動態增長他的resize好像也是有極限的 不過這部分我就不太熟了QQ
※ 編輯: kurakidream 來自: 140.115.220.183 (03/21 00:48)
7F:→ swpoker:問一下你讀檔是? 簡單:寫入DB~在去操作資料~結束 03/21 09:06
8F:推 superlubu:不考慮效能就先讀一次算行數,宣告 array 再讀入資料.. 03/21 10:32
9F:→ jej:讀檔建索引.. 感覺起來像是搜尋引擎在作的事情 apache lucene 03/21 12:32
10F:→ jej:X不知道符不符合你的需求~~ 03/21 12:35
11F:→ swpoker:可以說明一下你要讀檔做什麼嗎?這樣才好判別用什麼方法? 03/21 13:53
是做搜尋沒錯 這些索引檔是已經處理過的 讀出來就是文件向量
Mahout 跟 Lucene 我都會去看看 感謝大家的建議
※ 編輯: kurakidream 來自: 140.115.130.102 (03/21 15:11)
12F:推 cyclone350:借題發問... Mahout是哪一部分跟原PO問的有關係 03/21 15:56
13F:→ cyclone350:最近有看一下mahout,沒印象在讀檔或建立索引的api 03/21 16:00
14F:→ swpoker:建議去看設計樣式中的物件享元(?)及建構方式 03/21 16:49
15F:→ NewSpec:我說的是Mahout中為了大資料而特化的資料類別 03/22 01:04