humanemulator.net — справка. Продукт, демо и покупка — на хуманэмулятор.рф | Демо | Купить | API | лог изменений

optimize_memory

optimize_memory(); - оптимизировать память занимаемую программой (иногда дает временный эффект и тогда стоит использовать команды или перезапуска приложения или пересоздания браузера ).

После отработки функция возвращает результат своей работы в скрипт :
  • true – операция выполнена успешно
  • true – во время операции произошли ошибки

    Пример использования
    <?php
    // Scenario: Optimize memory usage and monitor effectiveness
    $xhe_host = "localhost:7010";
    if (!isset($path)){
        // Path to the init.php file for connecting to the XHE API
        $path = "../../../Templates/init.php";
        // Including init.php grants access to all classes and functionality for working with the XHE API
        require($path);
    }
    
    echo "\n<span>debug->" . basename(__FILE__) . "</span>\n";
    
    // Step: Get initial resources
    $beginMem = WINDOW::$debug->get_cur_mem_size();
    $gdiCount = WINDOW::$debug->get_gui_resources(0);
    $userCount = WINDOW::$debug->get_gui_resources(1);
    
    // Step: Check memory optimization effectiveness
    $iterations = 5;
    for ($k = 0; $k < $iterations; $k++) {
        // Step: Create additional browser instance
        WEB::$browser->set_count(2);
        WEB::$browser->set_active_browser(1);
    
        // Example 1: Allocate memory
        echo "\n\nExample 1: Allocate memory\n";
        for ($j = 0; $j < 2; $j++) {
            $curMem = WINDOW::$debug->get_cur_mem_size();
            echo "Current memory: $curMem ";
            
            WEB::$browser->navigate("vk.com");
            echo "Navigated to vk.com ";
            
            WEB::$browser->navigate("yandex.ru");
            echo "Navigated to yandex.ru ";
            
            WEB::$browser->navigate("google.com");
            echo "Navigated to google.com ";
            
            WEB::$browser->navigate("yahoo.com");
            echo "Navigated to yahoo.com\n";
        }
        
        // Example 2: Optimize memory
        echo "\nExample 2: Optimize memory\n";
        $result = WINDOW::$debug->optimize_memory();
        if ($result)
            echo "Memory optimized successfully ";
        else
            echo "Failed to optimize memory ";
            
        WEB::$browser->recreate();
        $memAfter = WINDOW::$debug->get_cur_mem_size();
        echo "Memory after optimization: $memAfter\n";
        
        // Example 3: Display memory usage
        echo "\nExample 3: Display memory usage\n";
        WEB::$browser->navigate("about:blank");
        WEB::$browser->navigate("ya.ru");
        WEB::$browser->navigate("yahoo.com");
        $memUsage = WINDOW::$debug->get_cur_mem_size();
        echo "Memory usage: $memUsage\n";
        
        // Example 4: Display memory usage after recreation
        echo "\nExample 4: Display memory usage after recreation\n";
        WEB::$browser->recreate();
        WEB::$browser->navigate("about:blank");
        WEB::$browser->navigate("ya.ru");
        WEB::$browser->navigate("yahoo.com");
        $memUsageAfter = WINDOW::$debug->get_cur_mem_size();
        echo "Memory usage after recreation: $memUsageAfter\n\n";
    
        // Step: Clean up browser instance
        WEB::$browser->recreate();
        WEB::$browser->set_count(1);
    }
    
    // Step: Display memory usage statistics
    $endMem = WINDOW::$debug->get_cur_mem_size();
    $deltaMem = ($endMem - $beginMem) / 1024 / 1024;
    $endMemMB = $endMem / 1024 / 1024;
    echo "Memory used: $endMemMB MB\n";
    
    if ($deltaMem < 0)
        echo "Delta memory size: $deltaMem MB (memory freed)\n";
    else
        echo "Delta memory size: $deltaMem MB (memory increased)\n";
    
    // Step: Display GUI resource statistics
    $gdiEnd = WINDOW::$debug->get_gui_resources(0);
    $userEnd = WINDOW::$debug->get_gui_resources(1);
    $deltaGDI = ($gdiEnd - $gdiCount);
    $deltaUser = ($userEnd - $userCount);
    echo "GDI delta: $deltaGDI, USER delta: $deltaUser\n";
    
    // Quit the application
    WINDOW::$app->quit();
    ?>
    # Additional paths
    import sys
    sys.path.insert(0, '../../../Templates PY/')
    
    xhe_host = "127.0.0.1:7010"
    from xweb_human_emulator import *
    
    # начало
    echo("<hr><font color=blue>debug.xxxxxxxxx</font><hr>")
    
    # память
    begmem=debug.get_cur_mem_size()
    gdi=debug.get_gui_resources(0)
    user=debug.get_gui_resources(1)
    
    # проверка эффективности чистки памяти
    num=0
    for i in range(0,5):
        # создадаим вкладку
        browser.set_count(2)
        browser.set_active_browser(1)
        # 1 
        echo("1. Выделим память : ")
        for j in range(0,2):
            echo(debug.get_cur_mem_size()," ")
            echo(browser.navigate("vk.com")," ")
            echo(browser.navigate("yandex.ru")," ")
            echo(browser.navigate("google.com")," ")
            echo(browser.navigate("yahoo.com"),"<br>")
        # 2 
        echo("2. Оптимизируем память : ")
        echo(debug.optimize_memory()," ")
        browser.recreate()
        echo("<font color=green>"+str(debug.get_cur_mem_size())+"</font><br>")
        # 3 
        echo("3. Выведем используемую память : ")
        browser.navigate("about:blank")
        browser.navigate("ya.ru")
        browser.navigate("yahoo.com")
        echo("<font color=blue>"+str(debug.get_cur_mem_size())+"</font><br>")
        # 4 
        echo("4. Выведем используемую память : ")
        browser.recreate()
        browser.navigate("about:blank")
        browser.navigate("ya.ru")
        browser.navigate("yahoo.com")
        echo("<font color=red>"+str(debug.get_cur_mem_size())+"</font><br><br><br>")
        # закроем вкладку
        browser.recreate()
        browser.set_count(1)
        num=num+1
        #if num%5==0)
            #debug.clear_tab_content("Отладка"))
    
    # выведем прирост памяти
    endmem=debug.get_cur_mem_size()
    deltamem=(endmem-begmem)/1024/1024
    endmem=endmem/1024/1024
    echo("Memory used endmem : ")
    if deltamem<0:
    	echo("<font color=green>delta memory size: "+str(deltamem)+"</font><br>")
    else:
    	echo("<font color=red>delta memory size: "+str(deltamem)+"</font><br>")
    echo("GUI: ")
    
    gdi_e=debug.get_gui_resources(0)
    user_e=debug.get_gui_resources(1)
    deltagdi=(gdi_e-gdi)
    deltauser=(user_e-user)
    echo("gdi: deltagdi user: deltauser ")
    
    # конец
    echo("<hr><br>")
    
    # Quit
    app.quit()
    #region using
    
    using System;
    using System.Diagnostics;
    using System.Collections.Generic;
    using System.Linq;
    using System.IO;
    using System.Text;
    using System.Threading;
    
    using XHE;
    using XHE.XHE_DOM;
    using XHE.XHE_System;
    using XHE.XHE_Window;
    using XHE.XHE_Web;
    
    #endregion
    
     class Program:XHEScript
     {
    	  static void Main(string[] args)
    	  {
    			// init XHE
    			server = "localhost:7010";
    			InitXHE();
    
    			// начало
    			echo("<hr><font color=blue>debug.optimize_memory</font><hr>");
    	
    			// 10 секунд на страницу
    			browser.set_wait_params(10,1);
    			// проверка эффективности чистки памяти
    			for (int k=0;k<20;k++)
    			{
    				// 1 шаг
    				echo("1. Выделим память : ");
    				for (int i=0;i<10;i++)
    				{
    					echo(debug.get_cur_mem_size()+" ");
    					echo(browser.navigate("about:blank")+" ");
    					echo(browser.navigate("ya.ru")+" ");
    					echo(browser.navigate("yahoo.com")+"<br>");
    				}
    				
    				// 2 шаг
    				echo("2. Оптимизируем память : ");
    				echo(debug.optimize_memory()+" ");
    				echo("<font color=green>"+debug.get_cur_mem_size()+"</font><br>");
    				
    				// 3 шаг
    				echo("3. Выведем используемую память : ");
    				for (int i=0;i<10;i++)
    				{
    					echo(debug.get_cur_mem_size()+" ");
    					echo(browser.navigate("about:blank")+" ");
    					echo(browser.navigate("ya.ru")+" ");
    					echo(browser.navigate("yahoo.com")+"<br>");
    				}
    				echo("<font color=blue>"+debug.get_cur_mem_size()+"</font><br>");
    				
    				// 4 шаг
    				echo("4. Выведем используемую память : ");
    				browser.recreate();
    				for (int i=0;i<10;i++)
    				{
    					echo(debug.get_cur_mem_size()+" ");
    					echo(browser.navigate("about:blank")+" ");
    					echo(browser.navigate("ya.ru")+" ");
    					echo(browser.navigate("yahoo.com")+"<br>");
    				}
    				echo("<font color=blue>"+debug.get_cur_mem_size()+"</font><br>");
    			}
    			
    			// конец
    			echo("\n\n");
    
    			app.quit();            
    	  }
    }
    // подключим функциональные объекты, если еще не подключен
    xhe_host="127.0.0.1:7014";
    echo=require("../../../Templates JS/init.js");
    
    // начало
    echo("<hr><font color=blue>debug.optimize_memory</font><hr>");
    
    // включим ActiveX
    browser.enable_activex(true);
    
    // проверка эффективности чистки памяти
    //while (true)
    {
    	// 1 шаг
    	echo("1. Выделим память : \n\n");
    	for (var i=0;i<10;i++)
    	{
    		echo(debug.get_cur_mem_size()+" ");
      	    echo(browser.navigate("about:blank")+" ");
    		echo(browser.navigate("ya.ru")+" ");
    		echo(browser.navigate("yahoo.com")+"<br>");
    	}
    	
    	// 2 шаг
    	echo("\n2. Оптимизируем память : ");
    	echo(debug.optimize_memory()+" ");
    	echo("<font color=green>"+debug.get_cur_mem_size()+"</font><br>");
    	
    	// 3 шаг
    	echo("3. Выведем используемую память : ");
    	browser.navigate("about:blank");browser.navigate("ya.ru");browser.navigate("yahoo.com");
    	echo("<font color=blue>"+debug.get_cur_mem_size()+"</font><br>");
    	
    	// 4 шаг
    	echo("4. Выведем используемую память : ");
    	browser.recreate();browser.navigate("about:blank");browser.navigate("ya.ru");browser.navigate("yahoo.com");
    	echo("<font color=red>"+debug.get_cur_mem_size()+"</font>\n");
    }
    
    // конец
    echo("\n");
    
    // Quit
    app.quit();

    =============================================
    Debug    Объекты    DOM  System  Vision  Web  Window        
    =============================================
    если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум
    .