Login ProductsSalesSupportDownloadsAbout |
Home » Technical Support » DBISAM Technical Support » Support Forums » DBISAM General » View Thread |
Messages 11 to 20 of 40 total |
Out of memory. |
Sun, Oct 22 2006 11:06 PM | Permanent Link |
"Robert" | "Charles Tyson" <cmtNOSPAMzeebox@sbcglobal.net> wrote in message news:E7F92ABF-518E-4717-98E6-84DCF043B404@news.elevatesoft.com... > You might try inserting this statement after each RunSQL(): > > SetProcessWorkingSetSize( GetCurrentProcess, DWORD(-1) , DWORD(-1) ); > // or > $FFFFFFFF, $FFFFFFFF > > This is supposed to force Windows to rethink how much RAM the application > actually > needs--it has the same effect as minimizing & maximizing the application. > A lot of Delphi > experts say that calling this procedure is useless window dressing > (Windows ought to be > taking care of low-memory situations on its own), but it doesn't seem to > be dangerous or > cost much execution time. > The issue is that if it is true that this is happening, it is potentially a nasty error in DBISAM. Maybe someone should try to reproduce the problem. |
Mon, Oct 23 2006 6:09 AM | Permanent Link |
Abdulaziz Jasser | Robert,
<<The issue is that if it is true that this is happening, it is potentially a nasty error in DBISAM. Maybe someone should try to reproduce the problem.>> I will try to prepare a small program which simulates the problem. Whoever interested in this test can send me an email and I will reply to him/her the test program. Regards, Abdulaziz Jasser |
Mon, Oct 23 2006 6:31 AM | Permanent Link |
Charles Tyson | "Robert" <ngsemail2005withoutthis@yahoo.com.ar> wrote:
>The issue is that if it is true that this is happening, it is potentially a >nasty error in DBISAM. Maybe someone should try to reproduce the problem. I tried, but wasn't able to reproduce the problem (using D5 and 4.24b1 on XP). I imported a series of tables (DAT size on disk 6 to 25 MB)--Process Explorer showed that the memory allocated for the INSERT was about 2x the combined DAT+IDX size, and was released when each table was freed. When the DAT file was 50 MB (950000 small records), the program became "non-responding" but didn't cause an out of memory error. I couldn't see any sign of the memory allocations stacking on top of the last. This was on a laptop with 512MB, so perhaps a rule of thumb is that memory tables shouldn't be larger than 5% of RAM. |
Mon, Oct 23 2006 6:57 AM | Permanent Link |
Roy Lambert NLH Associates Team Elevate | Abdulaziz
Post it to the binaries ng that way we call all have a look Roy Lambert |
Mon, Oct 23 2006 2:29 PM | Permanent Link |
Abdulaziz Jasser | Roy
<<Post it to the binaries ng that way we call all have a look >> Done. I've posted the code I am using. I am sure it's not a DBISAM problem therefore the problem should comes from my code. But I can not see it. Any way this code generates the problem if I run it against my database. Hope this will explain my problem. Regards, Abdulaziz Jasser |
Mon, Oct 23 2006 4:42 PM | Permanent Link |
Bernd Kuhlmann | Abdulaziz Jasser wrote:
> Done. I've posted the code I am using. I am sure it's not a DBISAM > problem therefore the problem should comes from my code. But I can not > see > it. Any way this code generates the problem if I run it against my > database. Hope this will explain my problem. > You have put everything in one big transaction. Dbisam has to save all changes so it can undo them if you rollback the transaction. Bernd Kuhlmann |
Mon, Oct 23 2006 5:32 PM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. timyoung@elevatesoft.com | Abdulaziz,
<< Done. I've posted the code I am using. I am sure it's not a DBISAM problem therefore the problem should comes from my code. But I can not see it. Any way this code generates the problem if I run it against my database. Hope this will explain my problem. >> Bernd is correct, you put the whole thing inside of a transaction, therefore DBISAM will buffer all inserts until the transaction is committed or rolled back. -- Tim Young Elevate Software www.elevatesoft.com |
Tue, Oct 24 2006 7:21 PM | Permanent Link |
Abdulaziz Jasser | Tim,
<<Bernd is correct, you put the whole thing inside of a transaction, therefore DBISAM will buffer all inserts until the transaction is committed or rolled back.>> This was my first thing to be tested. But the same problem is happing even without opening a transaction. So I tested the same code in another PC and still have the same problem. I even went back to version 3.30 and still have the same thing (the original database was 3.30). I also run "Repair" from DBsys program to check for any corruption but also no luck. |
Wed, Oct 25 2006 5:05 AM | Permanent Link |
Charles Tyson | Abdulaziz,
If you're sure the transaction isn't the cause... 1. What version of Delphi are you using? Patched to what level? 2. What version of DBISAM are you using? 3. What operating system? 4. How much RAM? 5. Are you running any program which might intercept file operations, e,g. Antivirus? Version control? Automatic backup? Recycle bin recovery? If so, turn them off and see if the problem still remains. 6. Are you using the standard Delphi memory manager, or something else? 7. If you run only the UPDATE SQL statements, do you see the memory problem? 8. If you run only the DELETE statements, do you see the problem? 9. If you run only the INSERT statements, do you see the problem? 10. What is the disk size of the files being INSERTed into memory (DAT + IDX)? (Average, and largest) 11. If you run the full program using small input files, does it complete successfully? 12. How are you measuring the memory usage? 13. Has this procedure ever worked? If yes, what has changed recently? 14. What is the failure error message? Is it coming from your code, Delphi, or Windows? Charles |
Wed, Oct 25 2006 9:06 AM | Permanent Link |
Abdulaziz Jasser | Charles,
<<1. What version of Delphi are you using? Patched to what level?>> Delphi7 Enterprise with no patches. <<2. What version of DBISAM are you using?>> 3.30 & 4.24 <<3. What operating system?>> XP Pro. <<4. How much RAM?>> 1 GB <<5. Are you running any program which might intercept file operations, e,g. Antivirus? Version control? Automatic backup? Recycle bin recovery? If so, turn them off and see if the problem still remains.>> No <<6. Are you using the standard Delphi memory manager, or something else?>> standard but I tried FastMM4 and did not help. <<7. If you run only the UPDATE SQL statements, do you see the memory problem?>> No, only with INSERT. <<8. If you run only the DELETE statements, do you see the problem?>> No <<9. If you run only the INSERT statements, do you see the problem?>> YES <<10. What is the disk size of the files being INSERTed into memory (DAT + IDX)? (Average, and largest)>> DAT=25 MGB IDX=25 MGB BLB=92 MGB <<11. If you run the full program using small input files, does it complete successfully?>> Yes <<12. How are you measuring the memory usage?>> By eatching Windows TaskList. <<13. Has this procedure ever worked? If yes, what has changed recently?>> Yes it was working with smaller data. We didn't modify this code for months. <<14. What is the failure error message? Is it coming from your code, Delphi, or Windows?>> It's a Delphi error. |
« Previous Page | Page 2 of 4 | Next Page » |
Jump to Page: 1 2 3 4 |
This web page was last updated on Tuesday, April 30, 2024 at 03:55 PM | Privacy PolicySite Map © 2024 Elevate Software, Inc. All Rights Reserved Questions or comments ? E-mail us at info@elevatesoft.com |