Memory htop显示即使调用了释放,内存仍在使用

Memory htop显示即使调用了释放,内存仍在使用,memory,fortran,Memory,Fortran,我在memtest.f90中有以下程序,我使用gfortran memtest.f90-o test编译该程序,然后使用调用/test mac osx (catalina) gfortran 9.3.0 from homebrew htop 2.2.0 from homebrew 调用deallocate语句后,我希望程序使用的内存会下降,但是,如htop所示,它继续徘徊在382MB左右(见下图) 这是内存泄漏吗?如果是,我如何正确释放内存,或者我只是在查看程序消耗的内存时出错了 程序通常不会

我在
memtest.f90
中有以下程序,我使用
gfortran memtest.f90-o test编译该程序,然后使用
调用/test

mac osx (catalina)
gfortran 9.3.0 from homebrew
htop 2.2.0 from homebrew
调用deallocate语句后,我希望程序使用的内存会下降,但是,如
htop
所示,它继续徘徊在382MB左右(见下图)

这是内存泄漏吗?如果是,我如何正确释放内存,或者我只是在查看程序消耗的内存时出错了


程序通常不会将内存返回到低于某个阈值的操作系统。释放也可能需要一些时间。这不是Fortran问题,而是系统问题


我并没有把它标为这本书的翻版,因为它相当间接,值得一些评论,但问题就在那里。Fortran编译器通常调用操作系统或附带的C编译器的C库提供的
malloc

。我在N上加了一个额外的零,这样程序消耗了~4GB而不是~400MB,在这种情况下,它确实将内存返回到系统。多谢
program main
  implicit none
  integer, parameter :: n=100000000
  real, allocatable :: values(:)
  print *, "no memory used yet, press enter"
  read(*,*)
  allocate(values(n))
  values = 0.0
  print *, "used a lot of memory, press enter"
  read(*,*)
  deallocate(values)
  print *, "why is the memory still there in htop"
  read(*,*)
end program main