diff --git a/src/ngx_http_brotli_filter_module.c b/src/ngx_http_brotli_filter_module.c
index e0ecc5c..4e6fdfc 100644
--- a/src/ngx_http_brotli_filter_module.c
+++ b/src/ngx_http_brotli_filter_module.c
@@ -68,6 +68,8 @@
     ngx_http_brotli_ctx_t *ctx);
 static ngx_int_t ngx_http_brotli_filter_get_buf(ngx_http_request_t *r,
     ngx_http_brotli_ctx_t *ctx);
+static void *ngx_http_brotli_filter_alloc(void *opaque, size_t size);
+static void ngx_http_brotli_filter_free(void *opaque, void *address);
 static void ngx_http_brotli_cleanup(void *data);
 
 static ngx_int_t ngx_http_brotli_ok(ngx_http_request_t *r);
@@ -392,7 +394,9 @@
     ngx_http_brotli_ctx_t   *ctx;
     ngx_http_brotli_conf_t  *conf;
 
-    encoder = BrotliEncoderCreateInstance(NULL, NULL, NULL);
+    encoder = BrotliEncoderCreateInstance(ngx_http_brotli_filter_alloc,
+                                          ngx_http_brotli_filter_free,
+                                          r->pool);
     if (encoder == NULL) {
         ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
                       "BrotliEncoderCreateInstance() failed");
@@ -667,6 +671,33 @@
 }
 
 
+static void *
+ngx_http_brotli_filter_alloc(void *opaque, size_t size)
+{
+    ngx_pool_t  *pool = opaque;
+    void        *p;
+
+    p = ngx_palloc(pool, size);
+
+    ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pool->log, 0,
+                   "brotli alloc: %p, size:%uz", p, size);
+
+    return p;
+}
+
+
+static void
+ngx_http_brotli_filter_free(void *opaque, void *address)
+{
+#if (NGX_DEBUG)
+    ngx_pool_t  *pool = opaque;
+
+    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pool->log, 0,
+                   "brotli free: %p", address);
+#endif
+}
+
+
 static void
 ngx_http_brotli_cleanup(void *data)
 {
