g2内存泄漏
-
一、背景
使用ng-alain(1.1.5)框架开发的项目中,在表格中使用集成的g2(3.4.8)插件。加上实时刷新功能时,出现内存泄漏。
<simple-table [data]="data" [columns]="columns" [loading]="loading"> <ng-template st-row="riskTrend" let-i let-index="index"> <g2-mini-area animate="false" color="rgba(0,224,230,0.2)" height="46" borderWidth="1" borderColor="#00E0E6" [data]="formateData(i.max_normriskscore)" line="true"> </g2-mini-area> </ng-template> <ng-template st-row="normriskscore" let-i> {{util.toThousands(i['max(normriskscore)'])}} </ng-template> </simple-table>
- 二、解决方案
1、定位过程:
1)在谷歌浏览器中打的包里,有一个对象一直不释放内存,这个对象是g2插件的。
2)试着把 g2-mini-area删掉,从新打包,没什么变化。
3)重新加上g2-mini-area后,又发生内存泄漏,此时确定是g2引起的。
2、解决方法:
不使用g2插件,改用echarts来实现表格中的图表,此时内存泄漏解决。
<simple-table [data]="data" [columns]="columns" [loading]="loading"> <ng-template st-row="riskTrend" let-i let-index="index"> <app-fwchart [seriesName]="'风险值'" [type]="'line'" [height]="45" [details]="true" [chartStyle]="{margin: '0px'}" [grid]="{left: 0, right: 5,bottom:0,top: 0,xAxis:false,yAxis:false}" [data]="formateData(i.max_normriskscore)" [areaStyle]="true" [nameKey]="'x'" [valueKey]="'y'" [timeType]="''"> </app-fwchart> </ng-template> <ng-template st-row="normriskscore" let-i> {{util.toThousands(i['max(normriskscore)'])}} </ng-template> </simple-table>