PDA

View Full Version : سوال: hibernate json Java heap space



solmaz1980
دوشنبه 28 دی 1394, 17:05 عصر
سلام.
من یه Eclipse Desktop Application دارم که آبجکت های json را به کمک hibernate در دیتابیس derby ذخیره میکند. این آبجکت ها یک byte[] دارند که بایتهای یک فایل pdf روی هارد هستش و باید در دیتابیس ذخیره بشه. -Xmx512m هستش و به خاطر شرایط کامپیوترهای کاربران نمیشه بیشتر گذاشت. اندازه فایلها میتونه مختلف باشه. الان من با فایلهای 11 مگ تست میکنم. و بعد از 7 یا 8 باز ذخیره خطای java heap space میگیرم.
currentSession رو میگیرم برای ذخیره. اما با open و close کردن session در هربار سیو هم، تست کردم و تغییری ایجاد نشد.

ورژن eclipse 3.4.0 هست و profiler ای هنوز پیدا نکردم که با این ورژن کار کنه. بالا بردن ورژن اکلیپس هم متاسفانه دست من نیست.

ممنون میشم اگر ایده ای به ذهنتون میرسه، بهم بگید.

solmaz1980
چهارشنبه 30 دی 1394, 12:37 عصر
سلام
گفتم چیزایی که پیدا کردم رو اینجا هم بذارم، شاید برای کسی مفید باشه.
یه ابزاری هست برای eclipse به نام mat، که در حقیقت memory analyzer هستش.
اگر پارامترهای XX:+HeapDumpOnOutOfMemoryError -mx512m -XX:HeapDumpPath به برنامه برای اجرا بدیم، یه فایل ایجاد میشه که اون فایله رو با این برنامه میشه چک کرد و دید که کدوم property کجا داره حافظه رو پر میکنه. امیدوارم واضح توضیح داده باشم.
راستی مشکل برنامه من یک لیست استاتیک بود که سشن ها باید بهش اضافه میشدن. هنوزم نمی دونم هدف برنامه نویس قبلی از این لیست و استاتیک قراردادنش چی بوده. اما الان که استاتیک بودنش رو برداشتم، برنامه بی مشکل اجرا میشه.

ahmad.mo74
چهارشنبه 30 دی 1394, 22:49 عصر
این آبجکت ها یک byte[] دارند که بایتهای یک فایل pdf روی هارد هستش و باید در دیتابیس ذخیره بشه.


هم رو هارد هست هم باید تو دیتابیس ذخیره بشه؟
اجباری هست برای اینکار؟؟ بهتر نیست توی JSON آدرس فایل رو نگه دارید به جای محتویاتش؟

همین گرفتن و ذخیره کردن محتویات فایل خودش میتونه فضای heap رو پر کنه...