Tôi đang đọc trong tệp văn bản sử dụng FileInputStream
để đặt nội dung tệp vào một mảng byte. Sau đó tôi chuyển đổi mảng byte thành một String bằng cách sử dụng String (byte) mới.Phân tích tệp văn bản trong Java
Khi tôi có chuỗi, tôi đang sử dụng String.split("\n")
để chia tệp thành mảng String và sau đó lấy chuỗi đó và phân tích cú pháp bằng cách thực hiện String.split(",")
và giữ nội dung trong Danh sách.
Tôi có tệp 200MB + và sắp hết bộ nhớ khi tôi khởi động JVM với bộ nhớ 1GB. Tôi biết tôi phải làm một cái gì đó ở một nơi nào đó chính xác, tôi chỉ không chắc chắn nếu cách tôi phân tích cú pháp là không chính xác hoặc cấu trúc dữ liệu tôi đang sử dụng.
Nó cũng đưa tôi khoảng 12 giây để phân tích cú pháp tệp có vẻ như rất nhiều thời gian. Bất cứ ai có thể chỉ ra những gì tôi có thể làm đó là làm cho tôi hết bộ nhớ và những gì có thể khiến chương trình của tôi chạy chậm?
Nội dung của tập tin xem như hình dưới đây:
"12334", "100", "1.233", "TEST", "TEXT", "1234"
"12334", "100", "1.233", "TEST", "TEXT", "1234"
.
.
.
"12334", "100", "1.233", "TEST", "TEXT", "1234"
Cảm ơn
Hãy làm rõ: Bạn đang nói rằng bạn đang sử dụng -Xmx1024m để khởi động JVM của bạn và bạn vẫn nhận được một lỗi OutOfMemoryError? – duffymo
Sử dụng mẫu được biên dịch sẽ tốt hơn (thậm chí cuộn phân tách chuyên gia của riêng bạn). Nhưng có vẻ như bạn chỉ có rất nhiều dữ liệu đối tượng. –
duffymo, chính xác là như vậy. Tôi đang thiết lập JVM với -Xmx1024m và nhận được hte OutOfMemoryError –