mina中的allocate和directAllocate区别

JavaGG 发布于 2009/07/08 16:26
阅读 368
收藏 0

allocate和directAllocate
区别在于内存的类型,allocate分配的内存在jvm管理范围内,directAllocate分配的内存则不是由jvm管理,可以理解成是类似C++那种分配的内存,大一定会说那由directAllocate分配的内存即然不由jvm管理,那么他是如何释放的,虽然directAllocate分配的内存不由jvm管理但他所属的对像还是由jvm管理的,所以但对像消亡时就是这段内存释放的时候,至于为什么java要提供二种内存分配方式,由于java的内存不是直接由操作系统管理,所以当网络来了数据后,要到java里,首先是放到系统所能操作的内存然后再复制到java的内存中,如果这部分内存是由directAllocate分配的,就不用再复制一次了,这样就减少了内存复制的次数,当然directAllocate并不是万能的,要知道,在jvm之外分配内存本身是非常耗时的操作,所以并不是一定由directAllocate分配的内存就能提高性能,这相要看具体的操作了,对于小数据量的传送就建议不要用directAllocate分配了。

加载中
返回顶部
顶部