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

نام تاپیک: دسترسی به مموری با استفاده از آدرس!

  1. #1

    Question دسترسی به مموری با استفاده از آدرس!

    سلام...
    چطور میشه به یک بافر یا استریم آدرس اختصاص داد.
    به طور مثال وقتی می‌خوایم از حافظه گوشی بخونیم آدرسش رو داریم .
    حالا میخوام آدرسی برای آبجکت های ذخیره سازی داده تو مموری تخصیص بدم‌
    دلیلش هم اینه که از یه کتابخونه native داخل یه پروژه استفاده میشه که یه سری دستورات بهش پاس داده میشه ،
    هر کدوم ازین دستورات یه input و output میخواد، به عنوان مثال تو پروژه اندرویدی میتونیم آدرس یک فایل رو از حافظه گوشی بدیم . تا اینجای کار مشکلی نیست اما حالا اگه بخوایم فایلی که تو بافر یا ارایه ی بایت ها وجود داره رو بهش بدیم ( بدون ذخیره سازی در حافظه گوشی و خواندن دوباره) به مشکل میخورم!

    تا جایی که خوندم نمیشه برای بافر آدرس تخصیص داد.

    از طرفی به Direct Byte Buffer ها برخوردم که میشه آدرس تخصیص داد و آدرسشون هم ثابت می مونه .

    دوستان کسی نظری ایده ای نداره؟

  2. #2
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: دسترسی به مموری با استفاده از آدرس!

    تا جایی که من میدونم، تو جاوا اشاره گر نداریم و نمیتونیم بهش آدرس بدیم و فقط باید آبجکتمون رو جای مشخصی حفظ کنیم و گرنه gc اونو حذف میکنه.
    اما مسئله Direct Byte Buffer هم جالب بود و طبق چیزایی که خوندم به نظر نمیاد آدرسی رو بهمون بده و باز همون آبجکت رو داریم که البته یکم متفاوته با آبجکت های دیگه. رفرنس رو ذخیره میکنه ولی محتوا روی heap جاوا نیست و خارج از این محدوده ذخیره میشه. البته نقطه مشخصی از حافظه رو اشغال میکنه و تا آخر برنامه (یا موقعی که بخوایم حذفش کنیم) باقی میمونه. با این حال سرعت بیشتری داره چون تغییر مکان نمیده و پیوسته هست. همچنین حذفش بلافاصله انجام نمیشه و خود به خود توسط gc انجام نمیشه بلکه باید بهش اطلاع بدیم. اگر رفرنسمون رو از دست بدیم، چون نمیتونیم به gc اطلاع بدیم، در نتیجه اون حافظه اشغال میمونه تا آخر برنامه و اصطلاحا بهش نشت حافظه (memory leak) میگن. پس این میشه از معایبش.

    این لینک رو هم پیشنهاد میکنم ببینید خوب توضیح داده:
    https://www.javamex.com/tutorials/io...r_direct.shtml

    اما
    دلیلش هم اینه که از یه کتابخونه native داخل یه پروژه استفاده میشه که یه سری دستورات بهش پاس داده میشه ،
    برای اینکار باید از JNI استفاده کنید که تا حدودی پیچیده است. هر چند لایبرری برای کمک به اینکار به اسم JNA هم ایجاد شده. ببینید: https://github.com/java-native-access/jna

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

  1. سوال: دسترسی به کنترل با استفاده از location
    نوشته شده توسط mh3242 در بخش C#‎‎
    پاسخ: 9
    آخرین پست: سه شنبه 24 تیر 1393, 17:09 عصر
  2. سوال: نحوه وارد شدن به صفحه با استفاده از نوار آدرس
    نوشته شده توسط zimzim در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: چهارشنبه 11 اسفند 1389, 12:28 عصر
  3. دسترسی به کنترل با استفاده از نامش(تکراری نیست)
    نوشته شده توسط Navid Asadi در بخش VB.NET
    پاسخ: 5
    آخرین پست: پنج شنبه 10 دی 1388, 13:02 عصر
  4. دسترسی به فیلدها با استفاده از متغیرها
    نوشته شده توسط mohinsoft در بخش SQL Server
    پاسخ: 5
    آخرین پست: یک شنبه 04 فروردین 1387, 00:46 صبح
  5. دسترسی به اینترنت با استفاده از RASو ISA
    نوشته شده توسط mmp1360 در بخش شبکه و Networking‌
    پاسخ: 0
    آخرین پست: دوشنبه 07 فروردین 1385, 12:58 عصر

برچسب های این تاپیک

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

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