XMLHttpRequest对象垃圾回收

Posted spring

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XMLHttpRequest对象垃圾回收相关的知识,希望对你有一定的参考价值。

XMLHttpRequest对象

function getData(){

  var xmlhttp = new XMLHttpRequest();

  xmlhttp.onreadystatechange = handler;

  xmlhttp.open(method, url, async);

  xmlhttp.send(data);

}

 

XMLHttpRequest对象的5种状态

UNSET(数字值为 0)

对象已创建。

 

OPENED(数字值为 1)

open() 方法已经成功调用。在此期间可以使用 setRequestHeader() 方法来设置请求头,并且可以调用 send() 方法来请求。

 

HEADERS_RECEIVED(数字值为 2)

所有的重定向都已经跳转(如果有的话),并且已经接收到了所有的HTTP响应头。

 

LOADING(数字值为 3)

响应的主体部分正在接收。

 

DONE(数字值为 4)

数据传输已经完成或者传输过程中出现错误(例如无限重定向)。

 

初始的 XMLHttpRequest 对象为UNSET状态。

send() 标志表示 send() 方法已经被调用。它初始状态不被设置,在 OPENED状态期间被调用。

 

XMLHttpRequest对象垃圾回收

不能被垃圾回收情况:

(1)如果 XMLHttpRequest 对象的状态是 OPENED并且已设置标识。

(2)状态是HEADERS_RECEIVED

(3)状态是LOADING且对以下是件注册了一个以上的事件监听: readystatechangeprogressabouterrorloadtimeoutloadend。

如果 XMLHttpRequest 对象在连接尚存打开时被垃圾回收机制回收了,用户代理必须终止请求。

 

XMLHttpRequest对象设置为未被引用

所以xmlhttp设置为null时,即不指向XMLHttpRequest对象时,XMLHttpRequest对象可能不能被垃圾回收,仍然可正常处理事件,如readystatechange事件。

 

 

 

 

参考:

[1]https://www.w3.org/html/ig/zh/wiki/XMLHttpRequest

 

以上是关于XMLHttpRequest对象垃圾回收的主要内容,如果未能解决你的问题,请参考以下文章

Java 垃圾回收 - 收集算法

对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 错误解决一例。(代码片段

Java内存与垃圾回收篇(对象内存与垃圾回收机制)上篇

java中垃圾回收机制的原理

垃圾回收机制

Java开发中垃圾回收的最佳做法?