本发明专利技术公开了一种在表格使用中减少占用内存的方法,以解决现有技术在显示大数据量信息时存在大量占用系统内存的问题;该方法将表格记录存放在系统本地的缓存中,本地缓存只保存部分记录。当表格要显示记录时,首先计算出要显示的记录范围,然后根据这个范围到本地缓冲中读取记录,如果取到记录则提交给表格显示,如果找不到记录,则从存储介质读取记录刷新本地缓存使之包含要显示的记录,并返回给表格显示。采用本发明专利技术,在用表格显示大数据量信息时只需占用较少的系统内存。
【技术实现步骤摘要】
本专利技术涉及计算机技术,尤其涉及。
技术介绍
在计算机的界面表达方式中,表格是很常见表达方式。因为该方式直观、信息量大,不仅可方便的进行记录间的比较,而且操作方便,所以目前主流的计算机语言和开发工具都支持表格。但也正是由于表格的信息量大,当一个表格中存在成千甚至上万条记录时就会严重影响表格,甚至程序的效率,严重时可导致操作系统不稳定。出现这种情况主要有以下三个方面的原因1、表格中保存每一条记录都是要占用内存,在显示记录时将要显示的全部记录从存储介质读到表内存,当记录很多时将占用大量的内存,从而导致上述问题,这也是表格大数据量下表格占用大量内存的主要原因;2、表格的实现方式不同也会产生效率和内存占用大的问题;例如MFC的表格和JAVA的表格就明显的不同。3、开发人员的编程经验和技巧问题。对于第2点原因,由于各种语言和开发工具侧重点以及实现都不同,并且一般都由专门的公司或组织尽可能的进行了优化,所以对于开发人员来说在这一点要在这一点上挖掘潜力效果不佳;至于第3点原因,由于涉及开发人员个人的能力等问题也没有实际有效的方式。因此,针对第1点原因成为有效的解决方式。
技术实现思路
本专利技术的目的在于提供,以解决现有技术在显示大数据量信息时存在大量占用系统内存的问题。实现本专利技术的技术方案,其特征在于包括如下步骤A、确定表格可视部分当前要显示的记录范围;B、判断保存显示记录的缓存中是否已存在所述记录范围内的数据,如果是则进行步骤D,否则进行步骤C;C、从存储显示记录的存储介质中至少读取所述记录范围内的所有数据刷所述缓存;D、从所述缓存中读取所述记录范围内的所有数据到显示表格。本专利技术使用本地缓存保存表格当前要显示的部分记录,在保持表格原有操作方式的同时大大减少了表格占用的内存,从而解决了大数据量情况下由于表格占用大量内存可能导致的其他问题。附图说明图1为缓存、数据集和表格间的关系示意图;图2为本专利技术的流程图。具体实施例方式表格中虽有大量的记录,但是表格的可视部分是有限的,因而只能显示一部分记录。因此,本专利技术在表格显示记录时,并不将所有要显示记录读到内存。本专利技术不将表格记录放在表格中,而是放在系统本地的缓存中,本地缓存只保存部分记录。当表格要显示记录时,首先计算出要显示的记录范围,例如要显示第1到30行,第0到7列等,之后根据这个范围到本地缓冲中读取记录,如果取到记录则提交给表格显示,如果找不到记录,则从存储介质读取记录刷新本地缓存使之包含要显示的记录,之后返回给表格显示。因此,本地缓存成为了表格和数据集之间的一座桥梁,它们之间的关系如图1所示。参阅图2所示,具体处理流程如下 步骤10在表格上切换操作视点,如拖动表格上的滚动条等。步骤20获取当前操作视点并计算出表格可视部分显示的记录范围。记录范围以起始行的标识和终行的标识表示。步骤30判断本地缓存是否包含所述记录范围内的所有数据,如是,则进行步骤50,否则进行步骤40。步骤40触发缓存刷新事件,按缓存大小从存储介质读取数据刷新本地缓存,该读取的数据中包含所述记录范围内的所有数据。步骤50从后的缓存页面中读取所述记录范围内的数据到表格。通过上述的方式,虽然表格要显示多少数据无法控制,但是由于表格从本地缓存中取数据显示,而本地缓存大小是可以控制的,所以占用的内存大小也就是可以控制的了,也就避免了产生内存占用过大的问题。例如有10万条记录要显示,但是本地缓存中只200条记录的数据,本地缓存只根据需要刷新,则表格实际只占用了200条记录的内存。本地缓存大小可以根据实际的需求配置,但是本地缓存至少能够保存表格可视部分的所有记录的数据。由于用户可能在表格中翻页,查看上一条或下一条等操作,导致表格的可视部分记录更改。如果缓存中只有可视部分的数据的话,则当用户操作时将使本地缓存频繁刷新,由此可能产生效率问题,所以本地缓存保存记录的范围要比可视范围更大。对于如何计算表格要显示的记录的范围,对于不同的开发工具方法各不相同。以Java为例,窗口显示的范围已经由Java本身自己算出。下面以Java为例给出一个实现方案的伪代码设置本地缓存大小,存入变量PageSize;计算要显示的记录一共由多少行,存入变量RowCount;用变量RowCount设置表格的行数,显示表格;当表格的可视部分刷新是将调用表格模型中的getValueAt方法,或表格绘制器的getTableCellRendererComponent方法时,由于表格要显示的记录范围已经由Java自己计算出来,并且只对要显示的记录调用上述的两个方法。所以在其中的任何一个方法中进行如下的处理if本地缓存中存在要显示的记录将该记录返回给表格显示else刷新本地缓存,使之包含要显示的记录,将该记录返回给表格显示显然,本领域的技术人员可以对本专利技术的方法进行各种改动和变型而不脱离本专利技术的精神和范围。这样,倘若对本专利技术的这些修改和变型属于本专利技术权利要求及其等同技术的范围之内,则本专利技术也意图包含这些改动和变型在内。本文档来自技高网...
【技术保护点】
一种在表格使用中减少占用内存的方法,其特征在于包括如下步骤:A、确定表格可视部分当前要显示的记录范围;B、判断保存显示记录的缓存中是否已存在所述记录范围内的所有数据,如果是则进行步骤D,否则进行步骤C;C、从存储显示 记录的存储介质中至少读取所述记录范围内的所有数据刷新所述缓存;D、从所述缓存中读取所述记录范围内的所有数据到显示表格。
【技术特征摘要】
1.一种在表格使用中减少占用内存的方法,其特征在于包括如下步骤A、确定表格可视部分当前要显示的记录范围;B、判断保存显示记录的缓存中是否已存在所述记录范围内的所有数据,如果是则进行步骤D,否则进行步骤C;C、从存储显示记录的存储介质中至少读取所述记录范围内的所有数据刷新所述缓存;D、从所述缓存中读取所述记录...
【专利技术属性】
技术研发人员:马贵,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。