找回密码
 立即注册

QQ登录

只需一步,快速开始

leo_

注册会员

6

主题

21

帖子

77

积分

注册会员

积分
77
最新发帖
leo_
注册会员   /  发表于:2024-7-3 10:07  /   查看:1698  /  回复:22
使用chrome打开,耗用chrome内存较高

1,为什么每次打开相同的excel,使用的内存确不一样,有时候100M,有时候确需要200M?
2,如何设置,能够减少内存使用

20 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-3 17:31:08
沙发
您好,

1、不太确定为什么会出现这样的情况,两次导入都是独立的吗?需要您提供一下这个Excel文件,我们实际调研一下。

2、需要确认一下目前您那边的内存使用量是多少?期望能够降低到多少?
回复 使用道具 举报
leo_
注册会员   /  发表于:2024-7-4 09:05:55
板凳
本帖最后由 leo_ 于 2024-7-4 09:22 编辑

Joestar.Xu 发表于 2024-7-3 17:31
您好,

1、不太确定为什么会出现这样的情况,两次导入都是独立的吗?需要您提供一下这个Excel文件,我们 ...

感谢您的回复。
以下是我的回答

1,都是独立的,Excel是spreadjs自动生成的,我们的做法是,先请求后台数据,生成json文件,然后Excel读取这个json文件,所以也没法提供这个Excel。

2,现在是打开这个Excel,如果json里面数据少于1000件,内存就会到100M以上,如果数据多于5000件,内存就会在170-220MB左右,发现JS使用内存约70%左右

3,如果将上面的Excel下载,使用office Excel打开,发现内存会降一半,所以希望内存能减少上面的一半。

4,另外我也升级到17.0.2,发现相同的Excel,占用内存更高,高出约30%左右。

5,有没有什么设置,比如什么参数,或者什么属性,可以减少内存使用,我可以设置一下试试。




回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-4 17:41:42
地板
您好,SpreadJS前端和Excel相比实现的架构是完全不一样的,SpreadJS基于浏览器实现,使用Canvas绘制,而MS Excel是一个桌面端的应用,在内存的使用和分配上SpreadJS不如Excel那么灵活,要达到MS Excel的内存使用水平几乎是不可能的。

如果想要尽可能降低内存的使用,可以不使用设计器,而是直接使用SpreadJS,可以在一定程度上减少内存占用。
回复 使用道具 举报
leo_
注册会员   /  发表于:2024-7-5 08:54:13
5#
本帖最后由 leo_ 于 2024-7-5 17:24 编辑
Joestar.Xu 发表于 2024-7-4 17:41
您好,SpreadJS前端和Excel相比实现的架构是完全不一样的,SpreadJS基于浏览器实现,使用Canvas绘制,而MS  ...

设计器肯定是需要使用的,
2,现在是打开这个Excel,如果json里面数据少于1000件,内存就会到100M以上,如果数据多于5000件,内存就会在170-220MB左右,发现JS使用内存约70%左右

上面内存使用率高吗?如果要降低内存的话,能降低多少?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-5 17:37:25
6#
您好,这边调研了一下,您提到的数据量所使用的内存属于正常情况,不属于占用过高的情况。

在使用了设计器的情况下,无数据时,JS堆的使用约为135M;

没有使用设计器的情况下,无数据时,JS堆的使用约为50M;

您这边具体是什么场景?为什么对内存这么敏感呢?
回复 使用道具 举报
leo_
注册会员   /  发表于:2024-7-5 18:05:16
7#
Joestar.Xu 发表于 2024-7-5 17:37
您好,这边调研了一下,您提到的数据量所使用的内存属于正常情况,不属于占用过高的情况。

在使用了设计 ...

我们现在是,正常使用的时候是142MB,但是导入20万数据的时候,就出现内存异常,out of memory现象
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-8 11:05:05
8#
您好,20W的数据量如果只是纯粹的数据理论上不会出现OOM的情况,但是如果包含大量的样式、条件格式、数据验证、公式等信息的话,有可能会出现OOM的情况。

具体的情况需要结合实际的用例来判断,请您提供一下可以复现这个问题的文件,这边本地复现后调研一下看看是否有优化的方案。
回复 使用道具 举报
leo_
注册会员   /  发表于:2024-7-9 11:17:05
9#
本帖最后由 leo_ 于 2024-7-9 11:27 编辑
Joestar.Xu 发表于 2024-7-8 11:05
您好,20W的数据量如果只是纯粹的数据理论上不会出现OOM的情况,但是如果包含大量的样式、条件格式、数据验 ...

现在的做法,是使用spreadjs生成一个excel,excel上面有一个按钮,按钮绑定事件,事件的内容是调取api获取20万的数据,然后把20万数据读取到内存,进行计算后,再设置到Excel表单里面。现在是觉得读取的20万数据很占内存,还有就是20万数据用完了,没有释放内存,而且js计算,也很费内存。

应该如何降低内存使用,将20万数据,放入到IndexedDB可行吗?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-9 17:32:18
10#
您好,从您的描述上来看,您是将数据从接口取得,此时20w数据只能存储到内存中,然后再经过计算设置到SpreadJS中。

这20w数据是直接存储在内存中的,与SpreadJS没有关联,也无法为您提供基于SpreadJS解决方案。
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部