نمایش نتایج 1 تا 5 از 5

نام تاپیک: آزاد نکردن حافظه در Intraweb

  1. #1

    آزاد نکردن حافظه در Intraweb

    با سلام
    بنده از Intraweb8 که همراه delphi 2006 منتشر شده استفاده میکنم و برنامه ای نوشتم که هم اکنون در چند شرکت راه اندازی شده. مشکل بنده مصرف حافظه ی بیش از اندازه ی ست که حتی در زمانی که Terminate ، Sessionمیشه باز از حافظه ای که برنامه گرفته کم نمی شود.(شما خودتون می توانید این مورد را با ایجاد یک برنامه ساده توسط Intraweb از نوع StandAloan امتحان کنید و ببنید با ایجاد کردن Session های جدید و Terminate کردنشون، Task Manager هیچ گونه کم شدن حافظه ای را نشان نمی دهد) این مشکل تا حدی بزرگ شده که برنامه 2 مگی من در یک شرکت حدود 2G حافظه گرفته بود....

    از دوستان گرامی مخصوصا Alireza Kousha عزیز که ظاهراً یه برنامه ی کامل با Intraweb نوشتن تقاضا دارم بنده را راهنمایی نمایند.

  2. #2
    به ازای هر Session در اینتراوب 2k حافظه در رم سرور گرفته میشه ، حالا میتونی یونیت UserSession رو کاملتر هم بکنی مثلا بشه 3K ، از این ببعد میشه اینکه چه چیزایی Create میکنی و با چه Owner هایی... تو اون مقاله آموزشی اینتراوب گفته بودم که فرمهات رو با Owner شی WebApplication بسازی ؛ که با ترمینیت شدن سشن فرمت هم ترمینیت بشه.
    داستان دیگه که خیلی مهمه (نه در اینتراوب در برنامه نویسی WebBased) اینه که کوءریهات تا حد ممکنه اطلاعات کمی رو برگردوند و سریغ هم دیاستهاشون خالی بشه ، چون همه دیتایی که از سرور لود میکنی توی حافظه سرور نگهداری میشه و به ازای هر کاربری که وصل میشه این اتفاق دوباره میفته !
    نکته خیلی مهم که یادم نیست تو اون مقاله نوشتم یا نه ابنه که بسیار توصیه شده هست که کلا تمام کمپونتهای دیتابیسی رو روی UserSession بزاری نه روی فرمها و دلیلش هم همین اطمینان از آزاد شدن حافظه ای که میگیرند.
    نهایتا این مشکلی که نوشتی که به 2 Gig هم میرسه حافظه گرفته شده تقریبا با اطمینان میتونم بگم فقط در حالتی که دیتای خیلی زیادی از دیتابیس خونده باشی توی برنامهت اتفاق میفته ، اینکه میگی فضا آزاد نمیشه ، اصولا تا جایی که منم میدونم کاربرها وقتی کارشون تموم شد حوصله زدن دکمه خروج یا Log Out رو نداند و صفحه رو میبندند که این موجب میشه کد Terminate اجرا نشه و تا وقتی که Session به Time Out خودش که مقدار Defaultش 10 دقیقه هست نرسه Terminate نمیشه. که میدونی که میتونی این مقدار رو Costumize کنی خودت. به هر حال اینکه فکر کنی این باگ Intraweb هست خیلی بعیده (میگم بعید چون ممکنه تو یک ورژن خاص باشه و الا حتما اینطوری نیست اینهمه برنامه با IW نوشته شده و مشکلی ندارند) بهتره بگردی ببینی کجا آبجکتهایی میسازی (بخصوص دیتابیسی) که بعدا به امید خدا رو هوا ولشون میکنی...
    راستی تو اون مقاله نوشته بودم برای آزد کرد فرمها نباید از Free استفاده کنی باید از Release استفاده کنی اونم دیدی؟

  3. #3
    با تشکر از توجوهتون.
    مورادی که فرمودید رعایت شده است. برای ایجاد تمام فرم ها از WebApplication، Owner استفاده شده، بنده از کامپونت های دیتابیسی به صورت مستقیم استفاده نمی کنم ولی برای دسترسی به پایگاه داده تمام کلاس های لازم را با WebApplication، Owner ایجاد می کنم و در OnDestroy تمام آنها را Release می کنم....
    ولی مسئله اینجاست، همانطور که گفتم اگر جنابعالی یک برنامه ساده با Intraweb و از نوع StantdAloan بسازید و خودتان دستی Session ها را ایجاد و Terminate کنید در Task Manager ویندوز هیچ بازپسگیری حافظه ای را از برنامه خود نمی بینید. حالا اگر برنامه را از نوع ISAPI ایجاد کرده باشید باید این عدم پسگیری و زیاد شدن حجم برنامه را مثلا برای INETINFO.exe مشاهده نمایید.

  4. #4
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    Iran
    پست
    1,035
    سلام

    من فرم ها را بصورت WebApplication، Owner ایجاد می کنم و برای بستن فر از دستور Release استفاده می کنم ، حال 2 سوال پیش می اید

    1- چرا به دکمه عقب گردد internet Explorer نمی شود عقب رفت
    2- وقتی فرم Release می کنم فرم قبلی مجدد Referesh می شود

    با تشکر

  5. #5
    به عقب بر نگشتن دلیلش اینه که کدی کنترل شده که دکمه بک کار نکنه مگر اینکه کدهای مربوط به منیج کردن فرمها رو در سرور کنترل نوشته باشی توی اینونت OnBackButton (اگر درست یادم بیاد). (در غیر اینصورت کار کردن دکمه بک در یم وب اپلیکیشن میتونی خطر ساز باشه)
    سوال دو رو هم نفهمیدم بیشتر توضیح بده ، کلا Manula اینتراوب رو دانلود کن و بخش مربوط به From Managmentش رو بخون توضیحاتش کامله

تاپیک های مشابه

  1. آموزش کار با IntraWeb در دلفی
    نوشته شده توسط Delphi Skyline در بخش توسعه نرم افزار تحت وب
    پاسخ: 22
    آخرین پست: یک شنبه 04 تیر 1391, 10:42 صبح
  2. نحوه ی استفاده از IntraWeb طراحی شده بر روی سرور
    نوشته شده توسط koosha system در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: پنج شنبه 17 تیر 1389, 17:00 عصر
  3. IntraWeb و بانک اطلاعاتی ...
    نوشته شده توسط Mahmood_M در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 7
    آخرین پست: دوشنبه 24 اردیبهشت 1386, 01:11 صبح
  4. intraweb
    نوشته شده توسط mohssen_mz در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 2
    آخرین پست: چهارشنبه 15 شهریور 1385, 17:45 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •