Kötü Pratikler
Bellek sızıntılarına (“OutOfMemoryError”), gecikme veya tutarsızlıklara yol açabileceğinden, bu kötü uygulamalardan kaçınılmalıdır.
Referanslar Depolanıyor
Gibi bazı örnekler
- ve ** HEDEF ** dahil olmak üzere yukarıdaki unsurlardan herhangi birini içeren kaplar
Koleksiyonlar
Haritalar
ASLA eklentilerde saklanmamalı veya eklentilerde önbelleğe alınmamalı.
Bunlar bunun için ana sebeplerdir:
Referanslar uygun çöp koleksiyonlarını önler
Örnekler daha fazla geçerli olmayabilir
Buna karşılık gelen anlık görüntüleri kullanarak veya belirli örneklerin UUID’lerini kaydederek ve gerektiğinde canlı bir örnek isteyerek bu kolaylıkla önlenebilir.
Ana sayfa üzerindeki IO
Bir yapılandırma / veri dosyası yükleme veya güncellemeleri kontrol etme / bir web sitesine bağlanma gibi bazı GÇ işlemlerini yürütmek çok zaman alır ve sunucuda TPS’yi büyük ölçüde etkiler. Bu tür görevler kendi konularında yapılmalı veya dahili zamanlayıcı asenk özelliğini kullanmalıdır. Ancak, sunucu başlatma / eklenti başlatma işlemi sırasında ana iş parçacıklarında gerekli dosyaları / yapılandırma yüklemek mükemmel bir işlemdir.
this.game.getScheduler().createAsyncExecutor(this).execute(this::checkForUpdates);
Daha fazla detay için scheduler belgelerine başvurun.
Bu hatalı olarak tamamlandıysa, istemcilerin zaman aşımını görebilirsiniz, veya hatta gözlemci sunucuyu mahvedebilir.
Oyun nesnelerine ana iş parçacığının dışından erişme
Ana nesnenin dışındaki oyun nesnelerine erişmek çökmelere, tutarsızlıklara ve diğer çeşitli sorunlara neden olabilir ve kaçınılmalıdır. Farklı bir iş parçacığı üzerinde uzun süren bir işleminiz varsa :doc: scheduler <../ scheduler> komutunu kullanarak ana iş parçacığında böyle oyun nesneleri üzerinde değişiklikler yapın. Farklı bir iş parçacığında bir oyun nesnesi kullanmak isterseniz örneğe ait bir anlık görüntü veya ayrılmış bir veri kabını kullanın.
Uyarı
Eğer bu yanlış yapılırsa, en iyi durumda bir sunucu çöküşü olsun olmasın, en kötü ihtimalle bozulmuş bir oyuncu / dünya / sunucu olsun veya olmasın bir `` ConcurrentModificationException`` alabilirsiniz.