by Valeriano Tortola
12. julio 2008 00:41
La interfaz IDisposable nos provee del método .Dispose() que utilizamos para liberar los recursos que esta usando ese objeto, pero dicho método... no deja de ser un simple método ;) Solo hace falta hacer una pequeña prueba para darse cuenta:
1: class Program
2: {
3: static void Main(string[] args)
4: {
5: Desechable test = new Desechable();
6:
7: test.Dispose();
8:
9: Console.WriteLine(test.Cadena??"Muerto"); // Muestra: Vivo!
10: Console.ReadKey(true);
11: }
12: }
13:
14: class Desechable : IDisposable
15: {
16: public String Cadena = "Vivo!";
17:
18: public void Dispose()
19: {
20:
21: }
22: }
Ok ok... un poco más complejo:
Mas...
by Valeriano Tortola
24. octubre 2007 00:54
Siguiendo con el el artículo anterior de la memoria en .NET donde explicaba como esta estructurada, sigo con las variables, que en .NET principalmente son de dos tipos:
Tipo (alias) |
Bytes |
Rango |
Char (char) |
2 |
Caracteres |
Bolean (bool) |
4 |
True ó False |
IntPtr |
? |
Puntero nativo |
DateTime (date) |
8 |
1/1/0001 12:00:00 AM a 12/31/9999 11:59:59 PM |
SByte (sbyte) |
1 |
-128 a 127 |
Byte (byte) |
1 |
0 a 255 |
Int16 (short) |
2 |
-32768 a 32767 |
Int32 (int) |
4 |
-2147483648 a 2147483647 |
UInt32 (uint) |
4 |
0 a 4294967295 |
Int64 (long) |
8 |
-9223372036854775808 a 9223372036854775807 |
Single (float) |
4 |
-3.402823E+38 a 3.402823E+38 |
Double (double) |
8 |
-1.79769313486232E+308 a 1.79769313486232E+308 |
Decimal (decimal) |
16 |
-79228162514264337593543950335 a 79228162514264337593543950335 |
-
- Se conoce su tamaño antes de su inicialización, el más grande tiene 16 Bytes.
- Heredan de System.ValueType y ninguno puede ser extendido (sealed)(ni siquiera ValueType).
- Se almacenan en el thread stack cuando son variables locales y expresiones intermedias, y en el managed heap en el resto de situaciones (variables globales ó/y estáticas).
- Las estructuras (struct) y enumeraciones (enum) son tipos por valor también y responden al mismo comportamiento.
- La memoria ocupada por estos tipos se elimina en cuanto están fuera de ámbito en caso de estar en el thread stack, y por medio del GC cuando estan en el managed heap (desapareciendo junto con la clase a la que está asociada).
Mas...
by Valeriano Tortola
22. octubre 2007 05:05
Con este, quiero empezar una serie de pequeños artículos sobre como esta estructurada la memoria en .NET, sin profundizar en demasiados detalles... pero empezar por lo más simple y acabar hablando sobre temas de sincronización, atomicidad y volaticidad pasando por el GarbageCollector, intentando aportar una información que a mi parecer, todo desarrollador debería tener en mente a la hora de programar... y que se debe conocer en profundidad para desarrollar aplicaciones multithreading. Espero que sea útil para quien lo lea y personalmente me ayude a comprenderlo mejor.
La memoria de la que hacen uso nuestras aplicaciones administradas se divide en dos partes principalmente:
Mas...