[6] [DFN[[RUBYB[[[大域スクリプト片付けジョブ]]]@en[global script clean-up job]]]]とは、
[[スクリプト]]の実行直後に行われる、不要になった資源を開放する操作です。

* 仕様書

[REFS[
- [1] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#global-script-clean-up-jobs-list>'''
- [13] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#run-the-global-script-clean-up-jobs>
- [8] [CITE[File API]] ([TIME[2014-03-26 19:56:12 +09:00]] 版) <http://dev.w3.org/2006/webapi/FileAPI/#lifeTime>
]REFS]

* 大域スクリプト片付けジョブ

[3] [[大域スクリプト片付けジョブ]]は、[[スクリプト]]を実行できません [SRC[>>1]]。

[4] [[大域スクリプト片付けジョブ]]同士の実行順序が意味を持つことはできません [SRC[>>1]]。

[2] [[関連する類似起源閲覧文脈の単位]]は、
[DFN[[RUBYB[[[大域スクリプト片付けジョブリスト]]]@en[global script clean-up jobs list]]]]を持ちます。
これは初期状態では空でなければなりません。 [SRC[>>1]]

[9] [[大域スクリプト片付けジョブ]]には次のものがあります。

[FIG(list)[
- [[自動revoke]] [SRC[>>8]]
]FIG]

* 実行

[5] [DFN[[RUBYB[[[大域スクリプト片付けジョブを走らせる]]]@en[run the global script clean-up jobs]]]]とは、
[[大域スクリプト片付けジョブリスト]]のジョブをそれぞれ実行し、[[大域スクリプト片付けジョブリスト]]を空にすることをいいます
[SRC[>>1]]。

[11] これが呼び出されるのは次の場面です。
[FIG(list)[
- [[clean up after running a callback]]
- [[イベントループのスピン]]
]FIG]

[12] すなわち[[スクリプト]]が実行された直後や中断される時に呼び出されます。

* 歴史

[7] [[大域スクリプト片付けジョブ]]は[[マイクロタスク]]と似ており、
実際当初は[[マイクロタスク]]として定義することも検討されていましたが [SRC[>>10]]、
適切ではないとして[[大域スクリプト片付けジョブリスト]]が新設されました。
[[マイクロタスク]]が実行される場面であっても[[大域スクリプト片付けジョブ]]は実行されないことがありますし、
逆に[[マイクロタスク]]の内部でも[[大域スクリプト片付けジョブ]]が実行されることがあります
([[複合マイクロタスク]]からの[[コールバック]]呼び出しなど)。

[REFS[
- [10] [CITE@en[Bug 19554 – Needed: An Algorithmic "Hook" For Culling URL.objectURLs with autoRevoke=true]] ([TIME[2014-04-15 05:05:24 +09:00]] 版) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=19554>
]REFS]


[14] [CITE@en[Remove global script clean-up jobs]]
([[mkruisselbrink]]著, [TIME[2017-02-03 03:53:33 +09:00]])
<https://github.com/whatwg/html/commit/305aa6705e2ae65ae8a407c53316359dfe286eba>