2017-11-17 17 views
0

잠재적으로 많은 오디오 노드를 만들고 파괴해야하는 무언가를 만들고 있습니다.오디오 노드를 파괴하는 가장 좋은 방법은 무엇입니까

  1. 노드의 모든 참조를 null로 설정 또는 뭔가 다른
  2. 통화 정지 방법을 적용
  3. 분리 모든 경우 : 내가 아는 한, 오디오 노드를 파괴하기 위해이 필요하다 및

처음 두 밖으로 연결은 아주 간단하지만 나는 그것이 모든 노드의 연결을 표시하는 것이 가능하고 또한 다른 어떤 내 목록에서 누락 된 경우 알 필요가 있다면 알아 내려고 노력하고있어. 나는 또한 내가 참조되지 않은 오디오 노드 여기

+0

SO에서 코드 **를 직접 작성하려고하므로 **이 주제를 오프 토픽으로 닫으려고합니다. ** [더 많은 조사를 한 후에] (// meta.stackoverflow.com/questions/261592)** 문제가 있다면 ** 시도한 것을 게시 할 수 있습니다 ** ** 명확한 설명이 무엇인지 is not ' t 작업 ** 및 ** [최소, 완료 및 확인 가능한 예제] 제공 (// stackoverflow.com/help/mcve)**. – Rob

+0

노드는 노드를 삭제하면 사라집니다. 그들을 배열에 pzt 경우. 배열에 내 노드를 저장하면 배열을 지우면 노드도 죽게됩니다. 노드는 RAM만큼 비싸지 않습니다. 비싼 것은 재생 된 후에 자체를 파괴하는 오디오 버퍼입니다. –

답변

1

의 존재를 감지 할 수있는 방법을 알 필요가 specifications on the lifetime of an AudioNode입니다 :

AudioNode은 오래에 대한 참조가있는 한 살 것이다. 참조 유형에는 여러 가지가 있습니다.

  1. 일반 가비지 수집 규칙을 준수하는 정상적인 JavaScript 참조입니다.
  2. AudioBufferSourceNodes 및 OscillatorNodes에 대한 재생 참조입니다. 이 노드는 현재 재생되는 동안 자체에 대한 재생 참조를 유지합니다.
  3. 다른 AudioNode가 연결된 경우 발생하는 연결 참조입니다.
  4. 아직 방출되지 않은 내부 처리 상태가있는 한 AudioNode 자체에서 유지 보수하는 테일 시간 참조입니다. 예를 들어 ConvolverNode에는 조용한 입력을받은 후에도 계속 재생되는 꼬리가 있습니다. 대형 콘서트 홀에서 손을 두드리고 홀에서 소리가 계속 울리는 것을 계속 생각하십시오. 일부 AudioNode에는이 속성이 있습니다. 특정 노드에 대한 세부 정보를 참조하십시오.

주기적으로 연결되어 AudioContext의 AudioDestinationNode에 직접 또는 간접적으로 연결된 모든 AudioNode는 AudioContext가 활성 상태 인 동안 살아있을 것입니다.

그래서, 내 이해에서 :

  • 플레잉 AudioNode는 중단해야합니다.
  • 기타 연결 해제하는 것이 가장 좋습니다.
  • 모두 연결 해제해도 문제가 없습니다.