We are using Fortran Composer Version 2020 update 4 and are experiencing a lot of memory leakage related to the number of files we open using direct access.
The following code will demonstrate the problem, which only appears to happen in the release build when the UNIT number is 100 or more.
INTEGER*4 IUNIT, ILOOP
IUNIT = 100
DO ILOOP = 0, 20000
OPEN (UNIT = IUNIT, FILE = "C:\TestFiles\Empty.dat", ACCESS='DIRECT', RECL = 4)
CLOSE (IUNIT)
ENDDO
A UNIT number of 99 or less doesn't cause the memory leakage.
Is there a way to overcome this problem?
With the release of the new Fortran compiler 2021.3.0 earlier this month, this memory leak is fixed! I rebuilt and looked at it with Inspector.
@JSmith, can you please confirm?
链接已复制
I can reproduce this using the 2021.1.2 compiler and Intel Inspector's memory leak analysis. The leak is about 440 bytes per iteration, happening during the OPEN call. But what I find most fascinating is that the leak occurs only when linking to the DLL form of the support libraries - if one links to the static libraries, no leak!
I have upgraded to the 2021.1.1 compiler now even with that and using the static libraries I am seeing a 440 bytes leakage (this has gone up from 432 bytes previously).
This isn't reported by the Inspector as with the DLL version.
I filed a bug report on the memory leak, CMPLRLIBS-33305. I'll let you know when it's fixed.
With the release of the new Fortran compiler 2021.3.0 earlier this month, this memory leak is fixed! I rebuilt and looked at it with Inspector.
@JSmith, can you please confirm?