Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法找到内存泄漏的原因_Java_Windows_Memory_Lwjgl_Ram - Fatal编程技术网

Java 无法找到内存泄漏的原因

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

我正在用LWJGL 3.2.3创建一个游戏,每次我加载一个级别文件时,我都可以在Windows任务管理器中看到RAM使用量增加。加载的对象的数量似乎无关紧要,而且我从未收到过
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&&采样器