es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Almacenar una gran colección por defecto de características.

Tengo que actualizar org.geotools.feature.DefaultFeatureCollection cada 1 segundo mientras la aplicación esté en funcionamiento (más de una hora).
He creado DefaultFeatureCollection lineCollection = new DefaultFeatureCollection(); como un miembro de la clase. Agrego puntos a ella cada 1 segundo lineCollection.add(feature);


public void addLines(Coordinate[] coords) {
try {
line = geometryFactory.createLineString(coords);
featureBuilder.add(line);
feature = featureBuilder.buildFeature(null);
lineCollection.add(feature);
}
catch(Exception e) {
e.printStackTrace();
}
}

Sin embargo, la colección se vuelve enorme y la memoria heap aumenta gradualmente, lo que resulta en un alto uso de la CPU y en que la aplicación se ralentice.
¿Hay alguna forma de liberar memoria una vez que la línea se muestra en el mapa?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de liberar memoria una vez que la línea se muestra en el mapa. Una forma de lograr esto es utilizando el recolector de basura de Java. Cuando un objeto ya no es referenciado o utilizado, el recolector de basura libera la memoria ocupada por ese objeto. En este escenario, una vez que la línea se muestra en el mapa, puedes removerla de la colección y permitir que el recolector de basura libere la memoria.

    Para remover la línea de la colección, puedes utilizar el método remove(Feature) de DefaultFeatureCollection.

    lineCollection.remove(feature);
    

    Esto removerá la característica (es decir, la línea) de la colección, haciendo que sea elegible para el recolector de basura. Alternativamente, también puedes intentar establecer la referencia de la característica a null después de removerla de la colección.

    lineCollection.remove(feature);
    feature = null;
    

    Esto asegurará que no haya más referencias al objeto de la característica, haciendo que sea elegible para el recolector de basura. Con este enfoque, puedes mantener el uso de memoria bajo control y reducir el uso de CPU ya que ya no hay objetos innecesarios en la memoria.

Comments are closed.