clojure repl是否存储先前命令的返回值

时间:2018-06-12 10:56:13

标签: java memory-leaks clojure read-eval-print-loop

如果我在clojure repl中执行此命令:

(take 5000000 (range))

此命令打印出数字高达500万(需要一些时间),并且执行期间clojure的内存使用量增加到750 MB and it stays at that throughout the rest of the session。 repl是否存储了之前命令的返回值,或者是因为clojure中存在内存泄漏?

1 个答案:

答案 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之一不再引用占用如此多内存的结果,那么下一个垃圾收集器运行应该回收存储器中。