Java 无法找到内存泄漏的原因
我正在用LWJGL 3.2.3创建一个游戏,每次我加载一个级别文件时,我都可以在Windows任务管理器中看到RAM使用量增加。加载的对象的数量似乎无关紧要,而且我从未收到过Java 无法找到内存泄漏的原因,java,windows,memory,lwjgl,ram,Java,Windows,Memory,Lwjgl,Ram,我正在用LWJGL 3.2.3创建一个游戏,每次我加载一个级别文件时,我都可以在Windows任务管理器中看到RAM使用量增加。加载的对象的数量似乎无关紧要,而且我从未收到过OutOfMemory错误。在VisualVM中,我找不到任何问题。使用的堆大约为50MB。 但是,Windows任务管理器在每次加载级别时都会增加 这可能是什么类型的内存泄漏以及如何修复? class使用BufferedReader从文本文件读取级别数据,创建对象并将其存储在HashMaps中 这是我的纹理。类: pri
OutOfMemory
错误。在VisualVM中,我找不到任何问题。使用的堆大约为50MB。
但是,Windows任务管理器在每次加载级别时都会增加
这可能是什么类型的内存泄漏以及如何修复?
class使用BufferedReader
从文本文件读取级别数据,创建对象并将其存储在HashMaps中
这是我的纹理。类:
private int id;
public Texture(String filename) {
id = glGenTextures();
glBindTexture(GL_TEXTURE_2D, id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
IntBuffer width = BufferUtils.createIntBuffer(1);
IntBuffer height = BufferUtils.createIntBuffer(1);
IntBuffer comp = BufferUtils.createIntBuffer(1);
ByteBuffer data = stbi_load(filename, width, height, comp, 4);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width.get(), height.get(), 0, GL_RGBA , GL_UNSIGNED_BYTE, data);
stbi_image_free(data);
}
public void bind(int sampler) {
if (sampler >= 0 && sampler <= 31) {
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, id);
}
}
public void unbind() {
glBindTexture(GL_TEXTURE_2D, 0);
glActiveTexture(0);
}
public int getID() {
return id;
}
private int-id;
公共纹理(字符串文件名){
id=glGenTextures();
glBindTexture(GL_纹理_2D,id);
glTexParameteri(GL\u纹理\u 2D,GL\u纹理\u最小\u过滤器,GL\u最近);
glTexParameteri(GL_纹理2D,GL_纹理MAG_过滤器,GL_最近);
glTexParameteri(GL_纹理2D、GL_纹理包裹S、GL_重复);
glTexParameteri(GL_纹理2D、GL_纹理包裹、GL_重复);
IntBuffer width=BufferUtils.createIntBuffer(1);
IntBuffer height=BufferUtils.createIntBuffer(1);
IntBuffer comp=BufferUtils.createIntBuffer(1);
ByteBuffer数据=stbi_加载(文件名、宽度、高度、组件,4);
GLTEXAGE2D(GL_纹理_2D,0,GL_RGBA,width.get(),height.get(),0,GL_RGBA,GL_无符号_字节,数据);
stbi_无图像(数据);
}
公共无效绑定(int采样器){
如果(采样器>=0&&采样器