Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
TERMINAL_MAXBARS'ı TerminalInfoInteger ile ayarlamayı denediniz mi? (..) makul bir küçük değere?
Bunun yanında sahip olduğunuz:
TERMINAL_MEMORY_PHYSICAL
Sistemdeki fiziksel bellek, Mb
int
TERMINAL_MEMORY_TOTAL
Terminalin işlemi için kullanılabilir bellek, Mb
int
TERMINAL_MEMORY_AVAILABLE
Terminal işleminin boş hafızası, Mb
int
TERMINAL_MEMORY_USED
Terminal tarafından kullanılan bellek, Mb
int
meselenin püf noktası nerede kontrol etmek için.
TERMINAL_MAXBARS'ı 500'e (gerçekten düşük) ayarladım, ancak hala daha fazla çubuk yüklüyor (bunun dosyadan olduğunu hayal edin?) ve bellek hala sürünüyor.
Yukarıda listelenen bellek sayaçlarını kaydetmeye başladınız, yakında bununla ilgili bazı geri bildirimler alacaksınız.
Tamam, bazı geri bildirimler aldım ve bu biraz garip görünüyor. Aşağıda iki günlük "MetaTrader Günlüğü" ve "PowerShell Günlüğü", çalıştırdığım ve bellek kullanımını günlüğe kaydeden iki günlük. (PowerShell betiği bu konunun başlarında, Görev Yöneticisi'ndekilerle eşleşecek şekilde güncelledim). Bu günlüklerin ikisi de son çalıştırmayı yaptığım ilk ve son zamanlar.
İlgi noktaları:
##### MetaTrader Günlüğü
##### Bu, Metatrader'daki kaydedicim tarafından kaydedildi. Tüm belleği çıkarır
#### PowerShell Günlüğü
#### Bu, PowerShell betiği tarafından günlüğe kaydedildi
29/04/2016 17:31:32 Kilo Bayt kullanımda 128 300 K
29/04/2016 18:05:08 Kilo Bayt kullanımda 215 488 K
TERMINAL_MAXBARS'ı 500'e (gerçekten düşük) ayarladım, ancak hala daha fazla çubuk yüklüyor (bunun dosyadan olduğunu hayal edin?) ve bellek hala sürünüyor.
Yukarıda listelenen bellek sayaçlarını kaydetmeye başladınız, yakında bununla ilgili bazı geri bildirimler alacaksınız.
Tamam, bazı geri bildirimler aldım ve bu biraz garip görünüyor. Aşağıda iki günlük "MetaTrader Günlüğü" ve "PowerShell Günlüğü", çalıştırdığım ve bellek kullanımını günlüğe kaydeden iki günlük. (PowerShell betiği bu konunun başlarında, Görev Yöneticisi'ndekilerle eşleşecek şekilde güncelledim). Bu günlüklerin ikisi de son çalıştırmayı yaptığım ilk ve son zamanlar.
İlgi noktaları:
##### MetaTrader Günlüğü
##### Bu, Metatrader'daki kaydedicim tarafından kaydedildi. Tüm belleği çıkarır
#### PowerShell Günlüğü
#### Bu, PowerShell betiği tarafından günlüğe kaydedildi
29/04/2016 17:31:32 Kilo Bayt kullanımda 128 300 K
29/04/2016 18:05:08 Kilo Bayt kullanımda 215 488 K
Ben (dizüstü bilgisayar, 8GB ram, Win7-64) 4 mt4'üm için eşdeğer ram kullanımına sahibim.
Bence endişelenmen gereken bir şey yok!
Hala kaç GB boş/kullanılabilir?
Ben (dizüstü bilgisayar, 8GB ram, Win7-64) 4 mt4'üm için eşdeğer ram kullanımına sahibim.
Bence endişelenmen gereken bir şey yok!
Hala kaç GB boş/kullanılabilir?
Grafiklerde yukarıdaki seviyelerde bir sürü RAM var. Sorun şu ki, onu çalışır durumda bıraktığımda RAM kullanımını yavaşça artırıyor.
Yani yaklaşık bir veya iki saat sonra maksimuma çıkmaya başlar.
Şu anda EA'yı Sunucu 2012, 7GB RAM, 4 Çekirdek (ne olduklarından emin değilim), 64 bit üzerinde çalıştırıyorum.
Grafiklerde yukarıdaki seviyelerde bir sürü RAM var. Sorun şu ki, onu çalışır durumda bıraktığımda RAM kullanımını yavaşça artırıyor.
Yani yaklaşık bir veya iki saat sonra maksimuma çıkmaya başlar.
Şu anda EA'yı Sunucu 2012, 7GB RAM, 4 Çekirdek (ne olduklarından emin değilim), 64 bit üzerinde çalıştırıyorum.
Bir keresinde bunun Win-Server'ın mümkün olduğu kadar bellekte tutan bir özelliği gibi göründüğünü öğrendim.
Terminalleri düzenli olarak yeniden başlattım ama bunun bir çökmeye neden olup olmayacağını merak ediyorum!
Bir keresinde bunun Win-Server'ın mümkün olduğu kadar bellekte tutan bir özelliği gibi göründüğünü öğrendim.
Terminalleri düzenli olarak yeniden başlattım ama bunun bir çökmeye neden olup olmayacağını merak ediyorum!
İlginç... Her ne kadar Market Watch'a giriş ve çıkış sembolleri yüklemekle ilgili bir şey gibi görünse de.
Terminal çökmez, sadece gerçekten yavaş, kullanılamaz şekilde yavaş çalışmaya başlar.
İlginç... Her ne kadar Market Watch'a giriş ve çıkış sembolleri yüklemekle ilgili bir şey gibi görünse de.
Terminal çökmez, sadece gerçekten yavaş, kullanılamaz şekilde yavaş çalışmaya başlar.
Bu, Server 2012'nin standart bir kurulumudur. Ancak benim teorim, kurulumun nasıl olduğu önemli değil. Bir bellek sızıntısı zamanla makinedeki tüm alanı kaplayacaktır.
Yani kutunun ne kadar hızlı veya ne kadar RAM'e sahip olduğu önemli değil, eğer bir sızıntı varsa, o zaman bir noktada sınıra ulaşacaktır.
Sadece bu konudaki 2 sentimle katkıda bulunmak için.
Burada bellek sızıntısı ve artışı hakkında pek çok iyi fikir var, ancak konu ve kök neden ile ilgili düşüncelerim:
- yayınlanan kaynak kod, örneğin SymbolSelect() dönüşü gibi birkaç ilgili işlev dönüşünü kontrol etmez.
- SymbolsTotal() gibi işlev dönüşüne dayalı for/while döngüleri, bazı yanlış değer işlev dönüşlerine karşı bir sınıra veya korumaya sahip olabilir.
Kodu vurguladıktan/değiştirdikten ve tekrar test ettikten sonra, belki sorunun temel nedenini bulabilir ve onaylayabiliriz.
Pek çok işlev çağrısı döndürülmezse, ayrılan bellek serbest bırakılmazsa Rogerio Figurelli'nin doğru olduğunu düşünüyorum.
Belki yığın taşması hatası verip vermediğini görmek için yığın boyutunu azaltabilirsiniz.
Yığın
Her MQL4 programında, otomatik olarak oluşturulan yerel işlev değişkenlerini depolamak için yığın adı verilen özel bir bellek alanı tahsis edilir. Tüm işlevler için bir yığın tahsis edilmiştir. Varsayılan yığın boyutu 256 kb'dir, yığın boyutu #property stacksize derleyici yönergesi kullanılarak yönetilebilir.
Statik yerel değişkenler, diğer statik ve global değişkenlerin depolandığı yerde saklanır - yığından ayrı olarak bulunan özel bir bellek alanında. Dinamik olarak oluşturulan değişkenler ayrıca yığından ayrı bir bellek alanı kullanır.
Her işlev çağrısıyla, dahili statik olmayan değişkenler için yığında bir yer ayrılır . Fonksiyondan çıktıktan sonra hafıza tekrar kullanılabilir hale gelir.
İlk işlevden ikincisi çağrılırsa, ikinci işlev değişkenleri için kalan yığın belleğinden gerekli boyutu kaplar. Bu nedenle, dahil edilen işlevleri kullanırken, yığın belleği her bir işlev için sırayla işgal edilecektir. Bu, işlev çağrılarından biri sırasında bellek yetersizliğine neden olabilir, böyle bir duruma yığın taşması denir.
Bu nedenle, büyük yerel veriler için dinamik belleği daha iyi kullanmalısınız - bir işleve girerken, yerel ihtiyaçlar için gerekli olan belleği sistemde ayırın ( new , ArrayResize() ) ve işlevden çıkarken belleği serbest bırakın ( sil , ArrayFree() ).
Ayrıca bakınız
Veri Türleri , Türlerin Kapsüllenmesi ve Genişletilebilirliği , Değişkenlerin Başlatılması , Değişkenlerin Görünürlük Kapsamı ve Ömrü , Nesne Oluşturma ve Silme
Güzel nokta.
Bunu bir ara deneyecek ve sonuçlarla birlikte burada geri bildirimde bulunacağız.
teşekkürler