在上一篇文章中,小编为您详细介绍了关于《如何用单反拍摄花期极短且夜间开放的昙花?单反摄影视频选择》相关知识。本篇中小编将再为您讲解标题java中为什么样要用ByteBuffer代替byte操作字节数据?jvm的堆栈问题。
是说用ByteBuffer代替byte[](元素类型为byte的数组)么?
其实也算不上是代替吧,只是希望能给native memory里的数据跟Java堆里的数据能套上①个统①的接口而已:
Java堆里的:HeapByteBuffer - 由byte[]存储实际数据Java堆外的(native memory里的):DirectByteBuffer - 由 malloc() / mmap() 等申请出来的空间存储实际数据仅此而已。所以如果针对byte[]来编程,就只能操作Java堆内的数据;而如果针对ByteBuffer接口来编程,就自然地可以操作Java堆内与堆外的数据,而不必关心具体底下的数据存哪里。
① · 栈是和线程对应,也就是JVM为每个线程都维护了①个栈。栈存放的是对象的引用和本地方法的基础数据类型变量,栈的大小是编译器就已知的。
② · 堆是JVM内部线程共享的,所以在多线程使用场景下,需要做同步操作。
③ · 最后你说的应该是内存可见性,这个指的是cache和主存数据之间的关系。
楼主在基础知识学好后可以去读《深入理解 Java 虚拟机》这本书,里面对JVM的讲解很到位。同时建议读相关官方文档来促进了解。
既然是栈(Stack),就不会存放对象或者对象副本了,因为Stack的每个Item的大小事固定的。而且,垃圾收集不会关注Stack,只是关注Heap,所以对象都跑到Heap中了。Java中的Stack有好些个呢,要注意区分,比如Stack(虚拟机栈、线程栈)、操作栈、本地方法栈等。可阅读JVM规范。
编后语:关于《java中为什么样要用ByteBuffer代替byte操作字节数据?jvm的堆栈问题》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《电脑无法开机主机风扇运转?之前我的台式机用了很久一直没问题》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器