Tôi đang phát triển trình ghi nhật ký/sniffer bằng Delphi. Trong quá trình hoạt động, tôi nhận được lượng dữ liệu khổng lồ, có thể tích lũy trong các hoạt động căng thẳng tới khoảng 3 GB dữ liệu. Trên một số máy tính nhất định khi chúng tôi đến các cấp đó, ứng dụng sẽ ngừng hoạt động và đôi khi sẽ ném ngoại lệ.Phương pháp phân bổ nào để sử dụng cho ứng dụng ghi nhật ký khối lượng lớn?
Hiện tại tôi đang sử dụng chức năng GetMem để cấp phát con trỏ cho từng thư.
Có cách nào tốt hơn để phân bổ bộ nhớ để tôi có thể giảm thiểu cơ hội bị lỗi không? Hãy nhớ rằng tôi không thể giới hạn kích thước đến một giới hạn cứng.
Bạn nghĩ gì về việc sử dụng HeapAlloc, VirtualAlloc hoặc thậm chí có thể tệp được ánh xạ? Mà sẽ tốt hơn?
Cảm ơn bạn.
Bạn có thể sử dụng trình ghi nhật ký khối lượng lớn hiện tại, như [Flume] (https://cwiki.apache.org/FLUME/) không? – Barend
phân bổ ít bộ nhớ hơn hoặc chuyển sang 64 bit delphi –
@Barend đây là một trình ghi nhật ký trong nhà thời gian thực nhận thông tin từ tất cả các quy trình của chúng tôi + dữ liệu USB (công ty của tôi làm việc với điện thoại di động và trong khi liên lạc tất cả các gói usb được thêm vào bộ ghi) . Tôi không nghĩ rằng một logger đã sẵn sàng sẽ có thể xử lý một cách chính xác. – Ran