【手続補正書】
【提出日】令和2年5月28日(2020.5.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デバイスの参照カウント環境内のオブジェクトを破棄するデバイスであって、
プロセッサと、
メモリと、を備え、前記メモリが、
破棄されるべきオブジェクトへの参照のオブジェクト破棄リストと、
第１のスレッドの代わりに前記プロセッサによって実行されるオブジェクト破棄ワークフローとを格納し、前記オブジェクト破棄ワークフローが、
前記第１のスレッドによってアクセスされるオブジェクトへの最後の参照を解放することに応答して、
前記オブジェクトを破棄することを試み、
前記オブジェクトの破棄を完了できないことに応答して、前記オブジェクトへの新規参照を、前記オブジェクトへの前記最後の参照として、前記オブジェクト破棄リストに追加し、
前記オブジェクトに関して、第２のスレッドによって前記オブジェクト破棄リストに追加された前記オブジェクトへの前記最後の参照を識別することに応答して、前記オブジェクトへの前記最後の参照を解放する、デバイス。
【請求項２】
前記オブジェクトの選択された部分が、前記第２のスレッドのオブジェクト破棄プロセスと関連付けられ、
前記オブジェクトの前記破棄を完了できないことが、前記選択された部分が、前記第２のスレッド内で呼び出されるべき前記オブジェクト破棄プロセスと関連付けられていることを決定することをさらに含む、請求項１に記載のデバイス。
【請求項３】
前記オブジェクトの選択された部分が、前記第１のスレッド以外のスレッドによって排他的に予約され、
前記オブジェクトの前記破棄を完了できないことが、前記オブジェクトの前記選択された部分が、前記第１のスレッド以外のスレッドによって排他的に予約されていることを決定することをさらに含む、請求項１に記載のデバイス。
【請求項４】
前記オブジェクト破棄ワークフローが、
前記オブジェクトを破棄するために実施されるべきタスクのセット、ならびに
それぞれのタスクに関して、
前記タスクのタスク基準、および
前記タスクのステータスをさらに含む、請求項１に記載のデバイス。
【請求項５】
前記オブジェクト破棄ワークフローが、オブジェクトのオブジェクト破棄を開始することに応答して、前記オブジェクトにゾンビ状態でマークし、
前記オブジェクトが、ゾンビ状態とマークされている間に前記オブジェクトにアクセスする第２のスレッドに応答して、前記第２のスレッドに前記オブジェクトのゾンビ状態を示す警告を返す、請求項１に記載のデバイス。
【請求項６】
前記デバイスが、サイクリックオブジェクトグラフを含むオブジェクトのオブジェクトセットをさらに格納し、
前記オブジェクト破棄ワークフローが、前記オブジェクトを破棄することを試みることに応答して、
前記オブジェクトを、前記サイクリックオブジェクトグラフを含む前記オブジェクトのオブジェクトセットのメンバとして識別し、
前記サイクリックオブジェクトグラフの前記オブジェクトセットへの排他的アクセスを獲得するために同期メカニズムを呼び出し、
前記同期メカニズムの前記排他的アクセスを保持しながら、破棄シーケンスに従って前記オブジェクトセットの前記オブジェクトを破棄し、
前記サイクリックオブジェクトグラフの前記オブジェクトのすべてを破棄することに応答して、前記同期メカニズムの前記排他的アクセスを解放する、請求項１に記載のデバイス。
【請求項７】
破棄動作を受信することが、前記オブジェクトが前記第１のスレッド以外の選択されたスレッドによってのみ破棄可能である保護オブジェクトとしてマークされていることを決定すること、および
前記決定に応答して、前記オブジェクトを破棄することを拒否することをさらに含む、請求項６に記載のデバイス。
【請求項８】
プロセッサを含むデバイスの参照カウント環境内のオブジェクトを破棄する方法であって、前記方法が、
前記プロセッサ上でオブジェクト破棄ワークフローを実行することを含み、前記オブジェクト破棄ワークフローが、
破棄されるべきオブジェクトへの参照のオブジェクト破棄リストを生成し、
第１のスレッドの代わりに、および前記第１のスレッドによってアクセスされるオブジェクトへの最後の参照を解放することに応答して、
前記オブジェクトを破棄することを試み、
前記オブジェクトの破棄を完了できないことに応答して、前記オブジェクトへの新規参照を、前記オブジェクトへの前記最後の参照として、前記オブジェクト破棄リストに追加し、前記オブジェクト破棄リスト内への前記オブジェクトへの前記最後の参照の包含が、前記オブジェクトにアクセスする他のスレッドに前記オブジェクトを破棄することを試みるように促す、方法。
【請求項９】
前記オブジェクト破棄ワークフローは、前記オブジェクトへの新規参照を前記オブジェクト破棄リストに追加することに応答して、前記オブジェクト破棄リストに前記新規参照が追加された前記オブジェクトに、前記オブジェクトへの前記最後の参照として、アクセスする第２のスレッドに通知する、請求項８に記載の方法。
【請求項１０】
前記第２のスレッドは、前記第１のスレッドよりも上位であり、かつ前記オブジェクトへのアクセスを共有する上位スレッドを含み、前記第２のスレッドに通知することは、前記上位スレッドに、前記オブジェクトへの新規参照の前記オブジェクト破棄リストへの追加を前記オブジェクトへの前記最後の参照として、通知することを含む、請求項９に記載の方法。
【請求項１１】
前記第２のスレッドに通知することは、前記プロセッサによって実行されるスレッドのスレッドコレクション間を検索して、前記オブジェクトにアクセスする前記第２のスレッドを識別することを含む、請求項９に記載の方法。
【請求項１２】
前記第２のスレッドは、前記第２のスレッドに伝達されることになっているメッセージのメッセージキューを更に含み、前記第２のスレッドに通知することは、前記第２のスレッドの前記メッセージキューに、前記オブジェクトへの新規参照の前記オブジェクト破棄リストへの追加を前記オブジェクトへの前記最後の参照として前記第２のスレッドに通知するメッセージを挿入することを含む、請求項９に記載の方法。
【請求項１３】
前記オブジェクト破棄ワークフローは、前記オブジェクト破棄リストをポールして、前記第１のスレッドによりアクセスされた前記オブジェクトへの最後の参照を識別し、前記オブジェクト破棄リストにおいて前記オブジェクトへの最後の参照を発見したことに応答して、前記オブジェクトへの最後の参照を前記オブジェクト破棄リストから削除し、前記オブジェクトへの最後の参照を開放する、請求項８に記載の方法。
【請求項１４】
前記オブジェクト破棄リストは、前記オブジェクト破棄リストへの前記オブジェクトへの最後の参照を受け取ることに応答して、第２のスレッドに、前記オブジェクトへの新規参照の前記オブジェクト破棄リストへの追加を前記オブジェクトへの前記最後の参照として通知する、請求項８に記載の方法。
【請求項１５】
前記第２のスレッドに通知することが、前記第２のスレッドの保留状態を識別することに応答して、前記解放可能なオブジェクトリスト内の前記オブジェクトへの前記最後の参照を処理するために前記第２のスレッドを有効にすることをさらに含む、請求項１０に記載の方法。
【請求項１６】
前記最後の参照を解放することは、前記オブジェクト破棄リストを定期的にレビューして、前記スレッドによりアクセスされたオブジェクトを識別することを含む、請求項８に記載の方法。
【請求項１７】
デバイスの参照カウント環境内のオブジェクトを破棄するためのデバイスであって、
プロセッサと、
メモリと、を備え、
前記メモリは、
破棄されるべきオブジェクトへの参照のオブジェクト破棄リストと、
前記プロセッサにより実行されるときに、前記デバイスに、第１のスレッドが前記スレッドによってアクセスされるオブジェクトへの最後の参照を解放することに応答して、前記オブジェクトを破棄することを試み、前記オブジェクトの破棄を完了できないことに応答して、前記オブジェクトへの新規参照を、前記オブジェクトへの前記最後の参照として、前記オブジェクト破棄リストに追加し、前記オブジェクト破棄リスト内への前記オブジェクトへの前記最後の参照の包含が、前記オブジェクトにアクセスする他のスレッドに前記オブジェクトを破棄することを試みるように促す命令を備えるオブジェクト破棄ワークフローを格納する、デバイス。
【請求項１８】
前記メモリは、コンテキストセッション内で利用されるオブジェクトのコンテキストセッションオブジェクトセットを更に格納し、前記コンテキストセッションの前記コンテキストセッションオブジェクトセットの前記オブジェクトへの最後の参照を格納するために、前記オブジェクト破棄リストは、前記コンテキストセッションと関連付けられている、請求項１７に記載のデバイス。
【請求項１９】
前記オブジェクトは、前記第１のスレッドが前記オブジェクトへの前記最後の参照を解放する際に保持されることになる保持オブジェクトであり、
前記メモリは、前記第１のスレッドおよび第２のスレッドの外側の前記オブジェクトへのキャッシュされた参照を格納する保持オブジェクトキャッシュをさらに備える、請求項１７に記載のデバイス。
【請求項２０】
前記保持オブジェクトキャッシュが前記保持オブジェクトへの前記キャッシュされた参照を格納する一方、それぞれのスレッド内の前記保持オブジェクトへの他の参照は、前記保持オブジェクトへの弱い参照としてマークされ、
前記オブジェクト破棄ワークフローが、前記保持オブジェクトへの前記キャッシュされた参照を削除することに応答して、前記それぞれのスレッド内の前記保持オブジェクトへの前記弱い参照を強い参照に変える、請求項１９に記載のデバイス。