输入hex文件可以包含至少50万行数据。因此,GUI应该显示所有这些。
当前实施:
- 创建JTable。
- 通过在Swing中扩展DefaultTableModel类来创建模型。例如HexModel
- 创建长度为0x10000的字符串数组,例如String [] dataString = new String [0x10000]
因为Intel hex文件中的每个地址记录都可以有最大0x10000个数据记录。
- 使用GAP字符串预填充此String数组,例如*。我们还需要在GUI中显示hex文件的GAP。
- 通过迭代当前地址记录的所有数据记录,将十六进制文件模型(通过解析输入hex文件创建)的数据字节数组存储到String数组dataString中。
- 创建字符串数组,例如rowString,长度为0x12,用于存储数据部分的地址,数据部分和ASCII字符串的字符串格式。
- 遍历长度为0xFFFF的数据记录,即0x10000 - 1,并将以下内容存储到rowString数组中。
一个。将地址存储到第一个索引中
湾存储来自长度为0x10的dataString数组的数据。
C。存储ASCII字符串。 (通过获取每个数据字节的ASCII值来创建ASCII字符串,将它们附加到StringBuilder并将其转换为String)
最后,将rowString数组添加到HexModel中。
- 对所有地址记录及其各自的数据记录完成迭代后,HexModel将更新为JTable。
醇>
请注意,启动GUI时没有性能问题。仅对于具有50万条记录(10MB文件)的hex文件,需要2到3秒。
但内存消耗是一个很大的问题。对于10MB的hex文件,内存需要250MB。
主要问题是尽管我从GUI中的选项卡式窗格中关闭了加载的文件,但内存并未减少。
我知道String被大量使用。但是处理这个用例的最佳方法是什么?
请求您输入此内存问题。
先谢谢。