Без необходимости возиться с инструментами и т. д., и если вам не нужно знать размер байта для конкретного объекта, вы можете пойти со следующим подходом:
System.gc();
Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
do your job here
System.gc();
Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
как вы читаете использованную память до и после, и вызывая GC непосредственно перед тем, как получить используемую память, вы понижаете «шум» почти до 0.
. Для более надежного результата вы можете выполнять свою работу n раз, а затем разделить используемую память на n, получив, сколько занимает память. Более того, вы можете запускать все это больше времени и делать среднее.
В вашем коде вы должны добавить чек при переходе в новое окно. В вашем коде вы находитесь в текущем окне.
//Switching to new window
for(String winHandle : driver.getWindowHandles()){
if(!(winHandle.equals(winHandleBefore)){
driver.switchTo().window(winHandle);
}
}
Это должно сработать для вас.