Jump to content

Tommi Prami

Members
  • Content Count

    511
  • Joined

  • Last visited

  • Days Won

    6

Posts posted by Tommi Prami


  1. 14 minutes ago, Dalija Prasnikar said:

    LSP is separate process and it's memory consumption does no affect the IDE. Extracting that functionality outside and reducing IDE memory footprint was one of the reasons LSP was introduced in the first place.

    There is known GDI handle leak in Parnassus Navigator https://quality.embarcadero.com/browse/RSP-40986

     

    Also IDE is using a bit more GDI handles than it used to and it seems that it has some caching issues, where it caches the component icons but it does not have a cache limit and it does not release those that were not accessed in for some period of time. Opening plenty of forms and accessing many different components during design time can hit GDI handle limit. AFAIK you can increase that limit (I never had issues so I never tried it) https://stackoverflow.com/questions/38612364/how-to-increase-the-maximum-amount-of-gdi-object-for-windows-10

    That what I tried to say, was not very clear tough, that since LSP is separate process, it does not matter in this case. New Task manager groups them together, so I as previously looking at wrong thing, total memory consumption, instead of just IDE. Therefore jumped into conclusions.

    Voted for Navigator GDI leak report, good to know. Thanks.

     

    -Tee-


  2. OK,

    Tested again, and it seems that I was barking at wrong tree here. I am not really fan of this new taksmanager. Should start to use pRocess Explorer aggain from SysInternals.

    Task manager It shows total memory of the process tree, so ide used little more than 1Gb of memory after it died. LSP processes used total of about gig. So total memory consumption peaked around 2Gb maybe slightly over, hard to tell, but it does not matter.

    This time I did not get Out of memory, butr IDE used all handles, and after that it ran for awhile, and just vanished.


    So memory is not the (only problem), tested this with opening lot of forms. Sometimes you need to go lot of forms through and it is hard to remember which are done and which are not, so... But have to do it in batches anyway, because IDE really start to crawl pretty soon when opening lot of forms. 
     

    -Tee-


  3. 5 hours ago, Berocoder said:

    But there is one thing. Exceptions are logged to a textfile. Callstack/Stacktrace are also logged. We use JCL for that.

    It works fine before but now I see sometimes callstacks make no sense anymore.

    1. Have not used JCL for that, but I would guess Map file is needed, make sure that mapfile if from correct build and/or updated.

    2. Do you see measurable speed increase with Optimizations on?

     

    -Tee-


  4. 9 minutes ago, Fr0sT.Brutal said:

    This is non-standard. I guess the program will receive par1=/path="C:\Program and par2=Files\mORMotHyperServer\"

    I do not quite folllow.

    Why that would be non standard. LEt me make complete example

    myapp.exe /path="C:\Program Files\mORMotHyperServer\"

    Why then the command line switch would/could not contain string: C:\Program Files\mORMotHyperServer\

    (without quotes)

    Forcing to wrap whole thing would be counter intuitive for me. (I think that syntax is supported by some apps).


  5. Yellow,

     

    Seems very nice that it'll also support sane syntax (for me) 🙂

    "raw /servers=2 /threads=8 /nopin"

    Instead of just  "/servers 2"

    If also is OK?

    /path="C:\Program Files\mORMotHyperServer\"

    I really don't like kind of detached command line params. like "/password badpw ..."  way easier for me to read /password="badpw" etc.

     

    -Tee-

     


  6. Nice work.

     

    Couple of points that are not that big of a deal, just think about them.

    1. Split the unit into maybe three units.
      1. For low level utils and types
      2. For TTask versions
      3. "Thread pool" unit, so if not used, threads are not initialized to consume memory (as pointed out in comments CPU and human time is small, but some might like to save the memory)
    2. Change repository name to something more describing. Like ThreadedResampler or something like that.

    Not to critisize, but was just thinking would those changes make sense to you, not 100% sure are they good idea or not.

      

    • Thanks 1

  7. We are thinking on moving from Jenkins server hosted locally to Azure DevOps and so.

    This sounds quite a big task, because personally don't know much of those environments. So if anyone has done this. All info would help. And if someone could give overview how to build something like that, and possibly where to start, that would be nice also,

     

    All youtube videos I've watched so far give way too simplistic picture of the whole thing, it just can't be that simple 🙂

     

    Please link Any material worth reading or watching.

     

    -Tee-


  8. 16 hours ago, DelphiUdIT said:

    Really interesting, knowing if a file is already in use by another application via an api instead of trying to open it and manage the error (without knowing "who" is blocking it anyway) is very useful in some scenarios.

     

    Bye

     

    This might be slow and resource intensive, depending on situation. 

    My idea of pseudocode pattern would be something like.
     

    try
      FileOperations(LFileName);
    except
      on E: Exception do
      begin
         ...
         if GetProcessReservingFile(LFileName, LProcessFileName) then 
           LErrorMessage := LErrorMessage + ' File is being used by ' + LProcessFileName;
         ...
      end;
    end;

     

    But everything depends on the situation.  Anyhow, user most likely would like  to know what app has the file is opened. 

     

    -Tee-

×