天天看点

DirectByteBuffer内存回收笔记

今天在看netty源码时候又再次遇到了DirectByteBuffer,关于DirectByteBuffer的内存回收机制,在netty框架中被封装的面目全非,但其回收机制也是万变不离其宗,下面这几篇简单易懂的文章就介绍了DirectByteBuffer的概念极其内存回收方式,在这里和大家分享一下:

文章列表
jvm堆外内存–DirectByteBuffer
java之HeapByteBuffer&DirectByteBuffer以及回收DirectByteBuffer
NIO DirectByteBuffer 内存泄露的测试

关键的几行代码也黏贴在这,旨在加深印象

public static void sleep(long i) {
        try {
            Thread.sleep(i);
        } catch (Exception e) {
            /*skip*/
        }
    }


    @Test
    public void testDirectByteBufferDeallocation() {

        /**
         DirectByteBuffer构造方法是包私有的,只能通过工具方法:
         public static ByteBuffer allocateDirect(int capacity)生成对象
         */
        ByteBuffer byteBuffer = ByteBuffer.allocateDirect( *  * );


        System.out.println(byteBuffer.isDirect());
        sleep( * );

        System.out.println("start clean");
        //可以通过操作系统命令查看堆外内存清理前后的内存占用
        clean(byteBuffer);
        System.out.println("end clean");

        sleep( * );
    }


    public static void clean(final ByteBuffer byteBuffer) {
        if (byteBuffer.isDirect()) {
            ((DirectBuffer) byteBuffer).cleaner().clean();
        }
    }
           
lhever 

.---.                                                                         
|   |   .              __.....__   .----.     .----.   __.....__              
|   | .'|          .-''         '.  \    \   /    /.-''         '.            
|   |<  |         /     .-''"'-.  `. '   '. /'   //     .-''"'-.  `. .-,.--.  
|   | | |        /     /________\   \|    |'    //     /________\   \|  .-. | 
|   | | | .'''-. |                  ||    ||    ||                  || |  | | 
|   | | |/.'''. \\    .-------------''.   `'   .'\    .-------------'| |  | | 
|   | |  /    | | \    '-.____...---. \        /  \    '-.____...---.| |  '-  
|   | | |     | |  `.             .'   \      /    `.             .' | |      
'---' | |     | |    `''-...... -'      '----'       `''-...... -'   | |      
      | '.    | '.                                                   |_|      
      '---'   '---'  
           

继续阅读