Esto es más de FYI que una respuesta real, pero también es bastante interesante.
Desde el W3C DOM especificación núcleo (http://www.w3.org/TR/DOM-Level-2-Core/core.html):
Los Core DOM APIs están diseñados para ser compatible con una amplia gama de idiomas, incluidos los lenguajes de scripting de usuario general y los lenguajes más desafiantes utilizados principalmente por programadores profesionales. Por lo tanto, las DOM API necesitan operar en una variedad de filosofías de administración de memoria, desde enlaces de lenguaje que no exponen la administración de memoria al usuario, pasando por aquellos (especialmente Java) que proporcionan constructores explícitos pero proporcionan un mecanismo automático de recolección de basura para automáticamente reclamar memoria no utilizada, a aquellos (especialmente C/C++) que generalmente requieren que el programador asigne explícitamente memoria de objeto, rastrear dónde se usa y liberarla explícitamente para su reutilización. Para garantizar una API consistente en todas estas plataformas, el DOM no aborda en absoluto los problemas de administración de memoria, sino que los deja para la implementación. Ninguno de los enlaces de lenguaje explícitos definidos por la DOM API (para ECMAScript y Java) requieren ningún método de gestión de memoria, pero los enlaces DOM para otros lenguajes (especialmente C o C++) pueden requerir tal soporte. Estas extensiones serán responsabilidad de quienes adaptan la DOM API a un idioma específico, no al Grupo de trabajo DOM.
En otras palabras: la gestión de la memoria se deja a la implementación de la especificación DOM en varios idiomas. Tendría que buscar en la documentación de la implementación DOM en javascript para encontrar cualquier método para eliminar un objeto DOM de la memoria, que no es un hack. (Sin embargo, existe muy poca información sobre el sitio del MDC en ese tema.)
Como una nota en
jQuery#remove
y
jQuery#empty
: de lo que puedo decir que ninguno de estos métodos hace otra cosa que no sea la eliminación de
Object
s de DOM
node
s o eliminar DOM
node
s del
document
. Solo eliminan Eso, por supuesto, no significa que no haya memoria asignada a estos objetos (a pesar de que ya no están en el
document
).
Editar: El pasaje anterior era superfluo ya que obviamente jQuery no puede hacer maravillas y trabajar con la implementación DOM del navegador usado.
incluso hacer por cada elemento $ (this) .unbind() html ("") remove(); – podeig
Pensé que jQuery elimina los controladores de eventos automáticamente, cuando haces element.remove(), ¿no? – jayarjo
@jayarjo - lo hace – vsync