Articles of gestión de memoria

Cómo evitar el error de tamaño de la stack de memoria inicial

Ejecuto un código Java con el siguiente comando: $ java -Xms4G -Xmx4G myjavacode La capacidad de RAM de mi CPU es de 6GB. Sin embargo, siempre falla al ejecutar este mensaje de error: Invalid initial heap size: -Xms5G The specified size exceeds the maximum representable size. Could not create the Java virtual machine ¿Hay alguna […]

¿Cuándo se libera la memoria asignada por el proceso .NET a Windows?

La puesta en marcha .NET asigna memoria para el montón de cada generación (0, 1, 2, LOH) en segmentos para obtener un bloque continuo de memoria, al inicio y cuando intenta satisfacer una solicitud de asignación, después de una recostackción. Esta memoria asignada para cada stack probablemente se nivelará a medida que la aplicación “se […]

inicialización de std :: string de char * sin copia

Tengo una situación en la que necesito procesar grandes cantidades de datos (muchos GB) como tales: construir una cadena grande añadiendo muchas cadenas más pequeñas (C char *) recortar la cadena convierta la cadena en una const std :: string de C ++ para procesarla (solo lectura) repetir Los datos en cada iteración son independientes. […]

¿Por qué nuestra aplicación MonoTouch se está rompiendo en el recolector de basura? No está fuera de la memoria

Tenemos una pregunta simple, pero la causa es complicada. Somos desarrolladores experimentados y hemos investigado mucho sobre lo que puede estar causando. Esperamos que los desarrolladores de MonoTouch puedan trabajar con nosotros para identificar lo que parece ser un problema común que las personas están teniendo y para el cual todavía no parece existir ninguna […]

¿Cómo manejar OutOfMemoryError en Java?

Tengo que serializar alrededor de un millón de elementos y obtengo la siguiente excepción cuando ejecuto mi código: Exception in thread “main” java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Unknown Source) at java.lang.String.(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) at org.girs.TopicParser.dump(TopicParser.java:23) at org.girs.TopicParser.main(TopicParser.java:59) ¿Cómo manejo esto?

¿Cuál es la diferencia entre una referencia __weak y __block?

Estoy leyendo la documentación de Xcode, y aquí hay algo que me desconcierta: __block typeof(self) tmpSelf = self; [self methodThatTakesABlock:^ { [tmpSelf doSomething]; }]; Lo siguiente se copia de la documentación: Un bloque forma una fuerte referencia a las variables que captura. Si usas self en un bloque, el bloque forma una fuerte referencia a […]

¿Este tipo de memoria se asigna en el montón o la stack?

En el contexto de C ++ (no es que importe): class Foo{ private: int x[100]; public: Foo(); } Lo que he aprendido me dice que si creas una instancia de Foo así: Foo bar = new Foo(); Entonces la matriz x se asigna en el montón, pero si creaste una instancia de Foo así: Foo […]

Capacidad inicial del vector en C ++

¿Cuál es la capacity() de un std::vector que se crea utilizando el constructor predeterminado? Sé que el size() es cero. ¿Podemos decir que un vector construido por defecto no llama a la asignación de memoria de stack? De esta forma, sería posible crear una matriz con una reserva arbitraria utilizando una única asignación, como std::vector […]

gfortran para dummies: ¿Qué hace mcmodel = medium exactamente?

Tengo un código que me está dando errores de reubicación al comstackr, a continuación se muestra un ejemplo que ilustra el problema: program main common/baz/a,b,c real a,b,c b = 0.0 call foo() print*, b end subroutine foo() common/baz/a,b,c real a,b,c integer, parameter :: nx = 450 integer, parameter :: ny = 144 integer, parameter :: […]

malloc implementación?

Estoy intentando implementar malloc y free C, y no estoy seguro de cómo reutilizar la memoria. Actualmente tengo una struct que se ve así: typedef struct _mem_dictionary { void *addr; size_t size; int freed; } mem_dictionary; Mi malloc ve así: void *malloc(size_t size) { void *return_ptr = sbrk(size); if (dictionary == NULL) dictionary = sbrk(1024 […]