2013-06-20 7 views
9

Znam tę sugestię o zawracania Domino obiektów: What is the best way to recycle Domino objects in Java BeansXPage Java Object Recycle w SSJS

Jaka jest najlepsza praktyka czy mam źródła danych o nazwie dokument i funkcji, które nazywa się kilka razy ten kod istnieje:

var doc=document.getDocument(true) 

i robienie rzeczy do dokumentu backendu.

Przed opuścić funkcję należy poddać recyklingowi doc lub jest mój dokument backend do źródła danych, a następnie poddane recyklingowi?

+0

Przesłanką dotyczącą recyklingu jest zwolnienie zużytych przedmiotów. Zdarza się automatycznie, gdy wątek http kończy się wraz z żądaniem. Essential to recycle w cyklach, co zużywa większą ilość ograniczonej ilości obiektów (limit wynosi ~ 10k dla całego serwera Domino/klienta Notes). Możesz sobie pozwolić na to, aby nie oddawać do recyklingu kilku dokumentów, chyba że wywołasz kod w cyklach. Uważaj na specjalne obiekty (data/czas, użytkownik) powiązane z sesją. –

Odpowiedz

13

To jest doskonałe pytanie, ponieważ jest to jeden z nielicznych wyjątków od zasady „recyklingu wszystko” (dwa inne godne uwagi przykłady to, że należy nigdy recyklingu bieżącej sesji lub bazy danych). Nie jest dobrym pomysłem recykling dokumentu końcowego dla źródła danych, ponieważ cykl życia JSF ma taki sam uchwyt, a Ty będziesz go przetwarzał spod Domino. Źródło danych dba o to dla nas, więc nie ma potrzeby recyklingu go ręcznie. Z drugiej strony, jeśli masz uchwyt na konkretnych przedmiotów (tj doc.getFirstItem("someFieldName"), lub element wartości, które są daty, to powinny recyklingu tych przedmiotów, tylko nie w samym dokumencie.

zdecydowanie najważniejszym scenariusz, w którym to kluczowe znaczenie dla recyklingu obiektów Java i SSJS znajduje się w widoku iteracji, ponieważ za każdym razem, gdy przechodzisz do następnego wpisu lub dokumentu, przerywasz uchwyt, jeśli pominiesz recykling.W większości innych przypadków recykling jest nadal wskazany, ale bliższy opcjonalnie, ponieważ inne operacje wymagają zbyt długiego wycieku, aby spowodować problemy, ale w przypadku iteracji bardzo dużego widoku można łatwo zabraknąć uchwytów w pojedynczej iteracji, jeśli zapomni się odtworzyć. Jedna myśl rozdzielająca jednak: rzadko widzę sytuację, w której uzyskanie uchwytu na dokumencie końcowym źródła danych jest najlepszym podejściem, więc zaleciłbym ponowne sprawdzenie kodu, aby upewnić się, że konieczne jest nawet uzyskanie tego uchwytu na początek. . Na przykład zamiast document.getDocument(true).getItemValueString("someFieldName"), wystarczy zadzwonić pod numer document.getValue("someFieldName"). Zwrócona wartość powinna być identyczna, ale będzie działać wydajniej, a Ty nie dotykasz dokumentu z tyłu, więc recykling nie stanowi problemu. A to mniej typowania dla każdego dostępu do przedmiotów, co z czasem z czasem się sumuje. Podobnie, zamiast document.getDocument(true).replaceItemValue("someFieldName", "newValue"), należy zastąpić document.setValue("someFieldName", "newValue").

Powiązane problemy