Articles of memory management

¿Cuántas veces lanzo un objeto asignado o retenido?

Estoy haciendo un juego para iPhone. Quiero liberar todos los objetos que han sido asignados o retenidos. En la función dealloc estoy liberando todos esos objetos, pero luego me di cuenta de que a veces termino liberando objetos cuando aún no han sido asignados. Así que pensé que tenía que comprobar si su retainCount es […]

¿Puedo establecer el tamaño máximo de almacenamiento dynamic de Java para ejecutar desde un archivo jar?

Estoy lanzando un archivo java jar que a menudo requiere más del tamaño predeterminado de almacenamiento dynamic de 64 MB. Sin embargo, un tamaño de almacenamiento de 256MB es suficiente para esta aplicación. ¿Hay alguna forma de especificar (quizás en el manifiesto) utilizar siempre un tamaño máximo de almacenamiento dynamic de 256 MB al iniciar […]

Tamaño de objetos enormes asignados directamente a la generación anterior

Recientemente he estado leyendo acerca de las asignaciones de objetos en diferentes generaciones en Java. La mayoría de las veces, los objetos nuevos se asignan en Eden (parte de Young Generation) y luego son promovidos a Old Generation si se cumple alguno de los siguientes criterios. (1) La edad del objeto alcanzó el umbral de […]

¿Se almacenarán dos cadenas con el mismo contenido en la misma ubicación de memoria?

Esta es una pregunta que recibí en una entrevista. Tengo dos cadenas definidas como String s1=”Java”; String s2=”Java”; Mi pregunta es si estas dos referencias apuntan a la misma ubicación de memoria. En general, cuando creamos cadenas idénticas (sin palabra clave nueva), ¿el contenido se almacena en la memoria solo una vez y todos los […]

¿Cómo serializo un gran gráfico de un objeto .NET en un BLOB de SQL Server sin crear un gran buffer?

Tenemos código como: ms = New IO.MemoryStream bin = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bin.Serialize(ms, largeGraphOfObjects) dataToSaveToDatabase = ms.ToArray() // put dataToSaveToDatabase in a Sql server BLOB Pero el vapor de memoria asigna un gran buffer del gran montón de memoria que nos está dando problemas. Entonces, ¿cómo podemos transmitir los datos sin necesitar suficiente memoria libre para […]

¿Es posible eliminar un objeto no nuevo?

Tengo un objeto con un vector de punteros a otros objetos, algo como esto: class Object { … vector objlist; … }; Ahora, los Objetos se agregarán a la lista de las siguientes maneras: Object obj; obj.objlist.push_back(new Object); y Object name; Object* anon = &name; obj.objlist.push_back(anon); Si haces un destructor que es simplemente ~Object { […]

Asignando más memoria de la que existe usando malloc

Este fragmento de código asignará 2Gb cada vez que lea la letra ‘u’ de stdin, e inicializará todos los caracteres asignados una vez que lea ‘a’. #include #include #include #include #define bytes 2147483648 using namespace std; int main() { char input [1]; vector activate; while(input[0] != ‘q’) { gets (input); if(input[0] == ‘u’) { char […]

Memoria compartida entre dos JVM

¿Hay alguna forma en JAVA, para dos JVM (que se ejecutan en la misma máquina física), de usar / compartir el mismo espacio de direcciones mermory? Supongamos que un productor en JVM1 coloca mensajes en una ubicación de memoria predefinida, ¿puede el consumidor en JVM2 recuperar el mensaje si sabe qué ubicación de memoria debe […]

Cómo lanzo un CGImageRef en iOS

Estoy escribiendo este método para calcular los valores medios R, G, B de una imagen. El siguiente método toma un UIImage como entrada y devuelve una matriz que contiene los valores R, G, B de la imagen de entrada. Sin embargo, tengo una pregunta: ¿cómo / dónde lanzo correctamente el CGImageRef? -(NSArray *)getAverageRGBValuesFromImage:(UIImage *)image { […]

¿Cómo incluir una matriz dinámica DENTRO de una estructura en C?

He mirado alrededor pero no he podido encontrar una solución a lo que debe ser una pregunta bien hecha. Aquí está el código que tengo: #include struct my_struct { int n; char s[] }; int main() { struct my_struct ms; ms.s = malloc(sizeof(char*)*50); } y aquí está el error que gcc me da: error: uso […]