OpenGL shared textures

It seems OpenCL somehow allocates too much memory when I point opengl 3d texture as OpenCL object.
look to the code:

unsigned char* data = new unsigned char[length*length*length*4];
for (int k = 0; k < length*length*length*4; k++) data[k] = 0;

glEnable(GL_TEXTURE_3D);
PFNGLTEXIMAGE3DPROC glTexImage3D;
glTexImage3D = (PFNGLTEXIMAGE3DPROC) wglGetProcAddress("glTexImage3D");

glGenTextures(1, &texname);
glBindTexture(GL_TEXTURE_3D, texname);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_REPEAT);
glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, length, length, length, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
glBindTexture(GL_TEXTURE_3D, 0);

int stopFirst = 0;

cl_texname = clCreateFromGLTexture3D(cxGPUContext, CL_MEM_READ_WRITE,  GL_TEXTURE_3D, 0, texname, &ciErrNum);
shrCheckErrorEX(ciErrNum, CL_SUCCESS, pCleanup);

ciErrNum = clEnqueueAcquireGLObjects(cqCommandQueue, 1, &cl_texname, 0, NULL, NULL);
shrCheckErrorEX(ciErrNum, CL_SUCCESS, pCleanup);

stopFirst = 0;

ciErrNum = clEnqueueReleaseGLObjects(cqCommandQueue, 1, &cl_texname, 0, NULL, NULL);
shrCheckErrorEX(ciErrNum, CL_SUCCESS, pCleanup);

so after the last step it is engaged about 192Mb! on my videocard, but the volume is 64Mb only. (Nvidia GT 650M)
any suggestions?