Websharper 应用程序性能下降,可能存在内存泄漏
Slowing performance in Websharper application, possible memory leak
下面单页 Websharper 应用程序中的示例代码展示了我在项目中遇到的问题。
随着时间的推移,有些操作的执行时间会逐渐延长。它每隔几秒钟发生一次。经过 20 分钟或更长时间后,Chrome 开始提醒 setTimeout 和 requestAnimationFrame 花费的时间超过 50 毫秒。
观察 Chrome 中的内存图,即使手动激活垃圾收集,随着使用量的增加,似乎也存在内存泄漏。我怀疑这会导致常规垃圾收集负载并导致执行时间延长。
对如何找到并解决这个问题有什么想法吗?
open WebSharper
open WebSharper.JavaScript
open WebSharper.JQuery
open WebSharper.UI.Next
open WebSharper.UI.Next.Client
open WebSharper.UI.Next.Html
open WebSharper.UI.Next.Notation
[<JavaScript>]
module Client =
type IndexTemplate = Templating.Template<"index.html">
type T = {
i : int
n : float
d : float
}
let Main =
JQuery.Of("#main").Empty().Ignore
let v = Var.Create {
i = 0
n = 0.0
d = 0.0
}
let rec f (n : float) =
let w = !v
v :=
{w with
i = w.i + 1
n = n
d = n - w.n
}
s()
and s () =
JS.RequestAnimationFrame f |> ignore
s()
div [
div [v.View |> View.Map (fun t -> "Frame " + string t.i) |> textView]
div [v.View |> View.Map (fun t -> sprintf "Started: %.1f" t.n) |> textView]
div [v.View |> View.Map (fun t -> sprintf "Duration: %.1fms" t.d) |> textView]
]
|> Doc.RunById "main"
我正在使用 Websharper 3.6.20.6、WebSharper.UI.Next 3.6.18.2 和 Chrome 59.0.3071.115。
感谢您的报告,我已将其链接到这张工单:https://github.com/intellifactory/websharper.ui.next/issues/129
今天将发布带有修复程序的 WebSharper 4 beta 堆栈版本,我们将研究向后移植一些像这样的重要改进到 WebSharper 3。
下面单页 Websharper 应用程序中的示例代码展示了我在项目中遇到的问题。
随着时间的推移,有些操作的执行时间会逐渐延长。它每隔几秒钟发生一次。经过 20 分钟或更长时间后,Chrome 开始提醒 setTimeout 和 requestAnimationFrame 花费的时间超过 50 毫秒。
观察 Chrome 中的内存图,即使手动激活垃圾收集,随着使用量的增加,似乎也存在内存泄漏。我怀疑这会导致常规垃圾收集负载并导致执行时间延长。
对如何找到并解决这个问题有什么想法吗?
open WebSharper
open WebSharper.JavaScript
open WebSharper.JQuery
open WebSharper.UI.Next
open WebSharper.UI.Next.Client
open WebSharper.UI.Next.Html
open WebSharper.UI.Next.Notation
[<JavaScript>]
module Client =
type IndexTemplate = Templating.Template<"index.html">
type T = {
i : int
n : float
d : float
}
let Main =
JQuery.Of("#main").Empty().Ignore
let v = Var.Create {
i = 0
n = 0.0
d = 0.0
}
let rec f (n : float) =
let w = !v
v :=
{w with
i = w.i + 1
n = n
d = n - w.n
}
s()
and s () =
JS.RequestAnimationFrame f |> ignore
s()
div [
div [v.View |> View.Map (fun t -> "Frame " + string t.i) |> textView]
div [v.View |> View.Map (fun t -> sprintf "Started: %.1f" t.n) |> textView]
div [v.View |> View.Map (fun t -> sprintf "Duration: %.1fms" t.d) |> textView]
]
|> Doc.RunById "main"
我正在使用 Websharper 3.6.20.6、WebSharper.UI.Next 3.6.18.2 和 Chrome 59.0.3071.115。
感谢您的报告,我已将其链接到这张工单:https://github.com/intellifactory/websharper.ui.next/issues/129
今天将发布带有修复程序的 WebSharper 4 beta 堆栈版本,我们将研究向后移植一些像这样的重要改进到 WebSharper 3。