`
jnullpointer
  • 浏览: 15820 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

DirectByteBuffer的几个点

阅读更多
1.代码中的'<<'写法
    private long ix(int i) {
        return address + (i << 0);
    }
    这个就等价下面这种写法,但为什么用(i << 0)
     private long ix(int i) {
        return address + i;
    }

我琢磨了很久,以为有什么特殊的考虑因素,后来看了其他openJDK6以后的代码才恍然大悟。DirectByteBuffer类是由Direct-X-Buffer.java作为模板生成的。生成的像其他的DirectShortBuffer和DirectCharBuffer是有 << 1。
待续...
分享到:
评论

相关推荐

    Java内存管理问题案例分享_技术大学.pdf

    Java运行时数据区分为几个部分,包括堆(Heap)、栈(Stack)、本地方法栈(Native Method Stack)、程序计数器(Program Counter)和方法区(Method Area)。栈包含了局部变量、操作数栈、栈帧和PC寄存器。本地方法...

    Netty面试专题.pdf

    在分析给定文件内容的过程中,我们可以提炼出关于Java面试专题中Netty的面试知识点,具体包括如下几个方面: 1. BIO、NIO和AIO的区别与联系 - BIO(Block IO)是传统Java IO模型,基于流的概念,以流的形式在客户端...

    netty.chm nettyapi

    在Netty 4.0版本中,有几个关键的知识点值得一提: 1. **NIO(Non-blocking I/O)基础**:Netty是基于Java NIO构建的,它利用了Java的Selector和Channel等非阻塞I/O机制,实现了高并发和低延迟的网络通信。 2. **...

    netty-learning学习Java源代码.zip

    在学习这个压缩包中的源代码时,你可以关注以下几个方面: 1. **Handler的实现**:了解不同类型的Handler(如解码器、编码器、业务处理器)是如何工作的,以及它们在Pipeline中的顺序如何影响数据处理。 2. **...

    2021面试题总结JVM篇.pdf

    根据提供的文档内容,我们可以深入探讨以下几个关键的JVM知识点: ### 1. 栈内存溢出 在Java虚拟机(JVM)中,每个线程都有一个独立的栈,即虚拟机栈,它用于存储线程运行时的数据。当线程执行方法时,会在栈上创建...

    后端-Java虚拟机了解

    JVM内存模型主要分为以下几个部分: - **程序计数器**:每个线程都有自己的程序计数器,它存储着当前线程执行的字节码的行号指示器。由于线程切换不会改变其他线程的计数器,因此不会出现StackOverflowError或...

    深入浅出NIO

    NIO的性能提升主要体现在以下几个方面: - **非阻塞I/O**:NIO的非阻塞特性意味着当数据未准备好时,调用不会阻塞,而是立即返回。这允许程序执行其他任务,提高了系统的整体效率。 - **多路复用器(Selector)**:...

    java netty框架

    Netty的核心概念包括以下几个部分: 1. **ByteBuf**:Netty中的缓冲区,替代了Java NIO中的ByteBuffer。ByteBuf提供了更友好的API,支持读写分离,避免了传统缓冲区的头部偏移量管理问题,提高了代码的可读性和性能...

    深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别

    ByteBuffer有以下几个主要特点: 1. 容量(capacity):ByteBuffer创建时会分配一个固定大小的缓冲区,容量不可变。 2. 限制(limit):限制指定了可以读取或写入的字节数,不超过容量。 3. 位置(position):表示下一次...

    JVM 18道面试题和答案.docx

    内存溢出(OOM)通常由以下几个原因引起: 1. **内存泄漏**:对象仍然被引用,但不再使用,导致无法被垃圾收集。例如,集合类中未正确清理引用,如示例代码所示,即使对象设为null,只要集合还持有引用,对象就不会...

    jvm_learn_note.pdf

    首先,Java内存主要分为以下几个区域: 1. **方法区**:线程共享,存储已加载的类信息、常量、静态变量以及编译后的代码。在HotSpot JVM中,这部分对应于"永久代"。 2. **堆**:也是线程共享,用于存储对象实例,...

    Netty之惊人的性能.pdf

    Netty的高性能主要体现在以下几个方面: 1. **异步非阻塞通信**: Netty采用NIO模型,所有的IO操作都是异步非阻塞的。这意味着,当一个IO操作开始后,调用者不会立即等待结果,而是可以继续执行其他任务。通过...

    Netty4.x源码分析详解

    Netty 的源码分析主要包括以下几个方面: 1. **I/O 模型**:理解 Netty 如何利用 NIO 实现非阻塞 I/O,包括 Channel、Selector 和 Socket 的工作原理。 2. **Pipeline 实现**:分析 Handler 的添加、移除和调用链的...

    JVM面试整理

    **直接内存(Direct Memory)**:直接内存并不是在JVM规范中定义的内存区域,而是在`NIO`类中提供的`DirectByteBuffer`对象,可以直接访问内存地址,这使得某些数据的读写速度更快。由于直接内存不受Java堆大小的限制...

    netty 实现长连接

    通常,这样的文章可能会讨论以下几点: 1. **TCP长连接原理**:TCP连接是基于三次握手建立的,长连接意味着连接一旦建立,除非主动关闭,否则会一直保持。这减少了每次请求都需要建立连接的时间。 2. **Netty中的...

    ECLIPSE,TOMCAT,JVM内存设置

    JVM内存分为几个区域,包括堆(Heap)、方法区(Method Area)、虚拟机栈(JVM Stack)、本地方法栈(Native Method Stack)和程序计数器(Program Counter Register)。内存溢出问题通常发生在堆或方法区。理解这些...

    深入Java虚拟机

    Java虚拟机主要由以下几个部分组成: 1. 类装载器:负责加载类文件,验证其合法性,并将字节码转化为内存中的方法区数据。 2. 运行时数据区:包括堆内存、栈内存、方法区等,存储对象实例和方法执行过程中的数据。 3...

    【IT十八掌徐培成】Java基础第27天-02.NIO-ServerSocketChannel-SocketChannel.zip

    缓冲区有几种不同的实现,如HeapByteBuffer(基于堆内存)、DirectByteBuffer(直接内存)等,它们各有优缺点,根据具体需求选择合适的类型。 5. **多路复用器(Selector)**: Selector是Java NIO中的核心组件,...

    JVM技术培训讲座

    JVM的内存模型主要包括以下几个方面: - **Eden区**:年轻代中的主要区域,新创建的对象首先在这里分配。 - **Survivor区**:分为From Survivor Space和To Survivor Space两部分,通过Minor GC进行对象的复制和筛选...

Global site tag (gtag.js) - Google Analytics