Vertex Arrays and Vertex Buffers are 2 different things, and it's unclear from your question if you indeed use the Vertex Buffer Object (VBO) mechanism to provide vertex data to GL, or if you use client-side arrays.
From GL point of view, a VBO is owned by GL, and requires allocation/deallocation explicitly. This is what a stray cat is talking about. You allocate memory of a VBO with glBufferData, and deallocate either with glBufferData or by deleting the VBO object itself.
Now, if you're not using VBO, then GL copies the data you're passing it on each draw, and does not consider the source memory as its own. In your case, this means a couple of things:
- the source data is up to the client to delete. Since you're using java, and java is a garbage collected language, chances are the only way to get rid of that memory is that java collects it
- the GL implementation often needs to keep a temporary copy of the data (because the GPU will not work on the draw immediately, in a lot of cases). This is totally up to the GL implementation to handle, and you likely have absolutely no control over this.