如果我在clojure repl中执行此命令:
(take 5000000 (range))
此命令打印出数字高达500万(需要一些时间),并且执行期间clojure的内存使用量增加到750 MB and it stays at that throughout the rest of the session
。 repl是否存储了之前命令的返回值,或者是因为clojure中存在内存泄漏?
答案 0 :(得分:2)
是的,Clojure REPL retains the result of the last 3 expressions:
使用REPL时可以使用几种特殊的变量:
* 1,* 2,* 3 - 保存已评估的最后三个表达式的结果
* e - 保存最后一个异常的结果
执行更多表达式后,xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:dpsApp"
x:Class="dpsApp.MainPage"
xmlns:flex="clr-namespace:Flex.Controls;assembly=Flex"
MasterBehavior="Default">
<MasterDetailPage.Master>
<ContentPage Title="Master">
<ContentPage.Content>
<StackLayout VerticalOptions="End">
</StackLayout>
</ContentPage.Content>
</ContentPage>
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<ContentPage Title="Detail" BackgroundColor="#e7e7e7">
<StackLayout>
<StackLayout x:Name="NoInternetStack" IsVisible="False" HorizontalOptions="Center" VerticalOptions="Center">
</StackLayout>
</StackLayout>
</ContentPage>
</MasterDetailPage.Detail>
,*1
和*2
之一不再引用占用如此多内存的结果,那么下一个垃圾收集器运行应该回收存储器中。