Reactjs React Js-Typescript 4.2.3 JavaScript内存不足

Reactjs React Js-Typescript 4.2.3 JavaScript内存不足,reactjs,typescript,Reactjs,Typescript,我创建了一些Typescript类型来帮助我开发React应用程序。如果我单独使用它们,它们工作得很好,速度很快,而且不会像预期的那样使用任何额外的内存。当我尝试将它们与其他类型一起使用时,问题就出现了,在我的reactjs应用程序上,它显示JavaScript内存不足 我用一个简单的例子来解释这个问题 在操场上,注意以下类型: //来自第129行 键入UseQueryOptions=Expand 键入UseQueryOptions 2=展开//line#129 键入UseQueryOption

我创建了一些Typescript类型来帮助我开发React应用程序。如果我单独使用它们,它们工作得很好,速度很快,而且不会像预期的那样使用任何额外的内存。当我尝试将它们与其他类型一起使用时,问题就出现了,在我的reactjs应用程序上,它显示
JavaScript内存不足

我用一个简单的例子来解释这个问题

在操场上,注意以下类型:

//来自第129行
键入UseQueryOptions=Expand
键入UseQueryOptions 2=展开//line#129
键入UseQueryOptions3=扩展uuu扩展推断O?O:从来没有
类型ExpandResult=Expand_uu扩展推断O?O:从来没有
键入UseQueryOptions 4=ExpandResult
正如您所看到的,我尝试了多种解决方案,将
Expand\uu
与另一种类型一起使用

然后,如果您尝试检查什么是
展开
(在第129行)(我的意思是,在操场上,将鼠标移动到展开上),将显示弹出窗口,您将看到运行此类型的函数。Chrome上typescript的工作人员通过此操作使用的内存是稳定的(20/22 MB),弹出窗口上的信息如预期的那样正确快速地显示

但是,如果您检查任何
UseQueryOptions[N]
(第129行/#131行/#132行/#135行),内存将开始增长到1.5GB(我认为,Chrome会删除工作线程),弹出窗口将不会显示任何信息

为了清楚起见,您可以在下面找到关于内存消耗的图片:

在正常情况下,typescript的辅助程序使用的内存小于30Mb,如果您尝试在第108行检查类型
展开
,或
让y1
在第113/114行:

但是,当我试图检查第129/#131/#132/#135行上的
UseQueryOptions
类型时,工作人员会使用这个内存:

所有这些解释都是因为我的reactjs应用程序也面临这种异常情况

当我尝试运行
react start
时,在添加了我前面提到的类似类型之后,控制台会被成功发出的
文件阻塞,等待类型检查结果…
,并且运行
react start
的进程
节点
会增长,直到达到节点上设置的内存限制(可以是2Gb或8GB,但显示错误只是时间问题),然后显示:

<--- Last few GCs --->

[16365:0x1046ca000]   448881 ms: Mark-sweep 2028.9 (2059.0) -> 2020.9 (2059.3) MB, 766.2 / 0.0 ms  (average mu = 0.132, current mu = 0.008) allocation failure scavenge might not succeed
[16365:0x1046ca000]   449641 ms: Mark-sweep 2028.9 (2059.3) -> 2020.9 (2059.3) MB, 754.6 / 0.0 ms  (average mu = 0.073, current mu = 0.007) allocation failure scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 0x1012e4da5 node::Abort() (.cold.1) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
 2: 0x1000a6239 node::Abort() [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
 3: 0x1000a639f node::OnFatalError(char const*, char const*) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
 4: 0x1001e9007 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
 5: 0x1001e8fa3 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
 6: 0x100397e95 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
 7: 0x10039995a v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
 8: 0x100395029 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
 9: 0x1003928c1 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
10: 0x1003a115a v8::internal::Heap::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
11: 0x1003a11e1 v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
12: 0x10036eb87 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
13: 0x1006ed8d8 v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
14: 0x100a7a239 Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit [/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]


[16365:0x1046ca000]448881毫秒:标记扫描2028.9(2059.0)->2020.9(2059.3)MB,766.2/0.0毫秒(平均mu=0.132,当前mu=0.008)分配失败清除可能无法成功
[16365:0x1046ca000]449641毫秒:标记扫描2028.9(2059.3)->2020.9(2059.3)MB,754.6/0.0毫秒(平均mu=0.073,当前mu=0.007)分配失败清除可能无法成功
致命错误:无效的标记压缩接近堆限制分配失败-JavaScript堆内存不足
1:0x1012e4da5节点::中止()(.cold.1)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
2:0x1000a6239 node::Abort()[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
3:0x1000a639f节点::OnFatalError(char const*,char const*)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
4:0x1001e9007 v8::Utils::ReportOOMFailure(v8::internal::Isolate*,char const*,bool)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
5:0x1001e8fa3 v8::internal::v8::FatalProcessOutOfMemory(v8::internal::Isolate*,char const*,bool)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
6:0x100397e95 v8::internal::Heap::FatalProcessOutOfMemory(char const*)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
7:0x10039995a v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
8:0x100395029 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector,v8::GCCallbackFlags)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
9:0x1003928c1 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace,v8::internal::GarbageCollectionReason,v8::GCCallbackFlags)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
10:0x1003a115a v8::internal::Heap::AllocateRawWithLightRetrySlowPath(int,v8::internal::AllocationType,v8::internal::AllocationRigin,v8::internal::AllocationIgment)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
11:0x1003a11e1 v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int,v8::internal::AllocationType,v8::internal::AllocationOrgin,v8::internal::AllocationAlignment)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
12:0x10036eb87 v8::internal::Factory::NewFillerObject(int,bool,v8::internal::AllocationType,v8::internal::AllocationRigin)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
13:0x1006ed8d8 v8::internal::Runtime_AllocateInYoungGeneration(int,unsigned long*,v8::internal::Isolate*)[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
14:0x100a7a239内置文件\u CEntry\u Return1\u DontSaveFPRegs\u ArgvOnStack\u NoBuiltinExit[/Users/jure.prah/.nvm/versions/node/v14.16.0/bin/node]
如果我从项目中删除这些行,那么它将按预期运行,并且没有任何错误,节点的内存约为200 MB

我希望这足够了,你有所有的信息来解决我的问题


否则,我将在这里向您提供进一步的信息。

我没有深入了解您的设置,或者您的本地内存使用率是否异常高,但是有这么多的依赖项,您很可能只是内存不足。当我在本地运行我的React应用程序时,我会增加可供您使用的内存量节点过程:

"scripts": {
    "start": "NODE_OPTIONS='--max-old-space-size=8192' yarn start"
}

这样一来,由于
JavaScript堆内存不足

您就少了在脚本对象btwThanks!修复之前的第一个
”崩溃@LoganDevine@LoganDevine非常感谢你的反馈。我已经试过了