Webpage refresh based on memory consumption

Examples disclosed herein involve refreshing webpages of a browser based on estimated memory consumption of the browser. A memory consumption of a webpage may be estimated by and a memory consumption threshold may be determined based on characteristics of a computing device executing or implementing the browser. Webpages of the browser are refreshed when the estimated memory consumption satisfies the memory consumption threshold.

BACKGROUND

A browser or web browser is an application for retrieving, presenting, and traversing information resources on the World Wide Web or Internet. The information resources may be provided via webpages. Browsers and/or webpages of browsers may be used to implement applications (e.g., single page applications (SPAs)). Browsers may present multiple webpages via multiple windows and/or multiple tabs of a window or windows. Like any other application, browsers consume memory and resources of a computing device (e.g., a computer, a mobile device (e.g., a smartphone, a tablet computer, etc.), a server, etc.) executing or implementing the browser.

DETAILED DESCRIPTION

Examples disclosed herein involve estimating memory consumption of a web browser and refreshing a webpage based on the estimated consumption. In some examples, memory consumption thresholds used to trigger a refresh of a webpage or webpages of a browser may be determined and/or adjusted based on characteristics of a computing device executing or implementing the browser. For example, when a webpage or webpages of a browser reach a memory consumption threshold, the webpages may be refreshed to maintain the state of the browser and avoid memory leaks.

In browsers, webpages and/or single page applications (SPAs) of webpages accumulate memory leaks as the webpages or SPAs remain open or running. Accordingly, the users may experience impeded processing speeds (e.g., slowness of the browser and/or other applications) and/or crashes due to the memory leaks as the browser webpages/SPAs remain open until a memory threshold is reached that causes a crash. To avoid slowness or a crash and prevent such accumulation of memory leaks, webpages of the browser may be refreshed to reduce the webpage memory consumption and clear any accumulated memory leaks. In previous techniques, webpages may be periodically or randomly refreshed for this purpose, however, this may result in unnecessary page refreshes, refreshing during user activity, or slowness/crashes because too much memory may be consumed before a future scheduled refresh for the webpage. Accordingly, examples herein enable refresh of webpages of a browser based on an estimated memory consumption of the browser. In many instances, browsers to do not indicate an amount of memory that a browser window or tab is consuming during runtime. Accordingly, examples herein further provide techniques for estimating an amount of memory consumed by a browser, and refreshing webpages based on an estimated amount of memory consumed. In examples herein, memory consumption may be based on execution time of a single thread execution and/or heuristics of accessing particular webpages via the browser. Memory consumption thresholds for determining when to refresh the memory may be set and/or adjusted based on characteristics (e.g., performance, processing capabilities, available resources (e.g., memory), etc.) of a computing device (e.g., a computer, a mobile device (e.g., a smartphone, tablet computer, etc.), a server, etc.) implementing the browser.

An example method includes estimating memory consumption of a webpage of a browser and determining a memory consumption threshold for refreshing the webpage in the browser based on characteristics of a device executing the browser. Further, an example method involves refreshing the webpage in the browser when the memory consumption satisfies the threshold. In examples herein, memory consumption may be estimated based on single thread execution time of webpages measured when accessing the webpages or heuristics from previous accesses to the webpages.

As used herein, memory consumption refers to consumption of memory of a computing device. Accordingly, memory consumption of a browser (or of webpages of the browser) refers to the consumption of memory of a computing device as a result of implementing or executing the browser. Such memory may be a volatile memory or a non-volatile memory of a computing device.

FIG. 1is a block diagram of an example browser system100including a webpage refresh manager110implemented in accordance with examples herein. The example browser system100includes a computing device102in communication with a network104. The example computing device102may be a personal computer, a mobile device (e.g., a smartphone, tablet computer, etc.), a server, or any other type of computing device. The example network104may be the World Wide Web (the Internet), an intranet, a local area network (LAN), a cloud network, etc. The computing device102ofFIG. 1includes a browser106(e.g., by executing or implementing the browser106via a processor and/or machine readable medium of the computing device102). In examples herein, the webpage refresh manager110manages refresh of webpages open (or running) in the browser106in accordance with examples herein.

The example browser106ofFIG. 1has access to the network104and runs webpages120. The example webpages120may include content from the network104for presentation and interaction with a user. The example webpages120may include single page applications (SPAs) that are managed or run by an entity to provide a service or product to a user. The example webpages120may be referred to collectively herein as the “webpages120” when referring to the webpages120running in the browser106or individually as “the webpage120” when referring to one of the webpages running in the browser106. In examples herein, as the webpages120are open in the browser106, they consume memory of the computing device102(e.g., via memory leaks). Accordingly, the longer the webpages120are open in the browser106, the more memory may be consumed by the browser106. In examples herein, the webpage refresh manager110prevents excessive memory consumption by the browser106by dynamically refreshing the webpages120running the browser based on an estimated memory consumption of the webpages120.

In examples herein, the webpage refresh manager110dynamically refreshes the webpages120open in the browser106based on an estimated memory consumption and a memory consumption threshold set for the computing device102. As shown inFIG. 1, the webpage refresh manager110may be part of the browser106(e.g., as a plugin), though the webpage refresh manager110may be an application outside of the browser executing on the computing device102. The example webpage refresh manager110monitors/estimates the memory consumption of the webpages running in the browser106. Furthermore, the webpage refresh manager110may determine the memory consumption threshold for the computing device120and/or set the memory consumption threshold to determine when to refresh the webpages120running the browser106. For example, the webpage refresh manager110may determine characteristics of the computing device102(e.g., performance, processing capabilities, available resources (e.g., memory), etc.) and set the memory consumption threshold appropriately based on the characteristics of the computing device102to prevent harming performance or a user experience of the browser106and/or computing device102such as slower processing speeds, efficiency, or bandwidth.

FIG. 2is a block diagram of an example webpage refresh manager110that may be used to implement the webpage refresh manager110ofFIG. 1. The example webpage refresh manager110ofFIG. 2includes a memory consumption estimator210, a device analyzer220, a threshold manager230, and a webpage refresher240. In accordance with examples herein, the memory consumption estimator210estimates memory consumption by the webpages120of the browser106, the device analyzer220determines characteristics of a computing device102implementing the browser106, the threshold manager230determines (or sets) a memory consumption threshold for refreshing the webpages and identifies when the memory consumption threshold is satisfied (e.g., reached, exceeded, etc.) by the browser, and the webpage refresher240refreshes the webpages120.

The example memory consumption estimator210estimates memory consumption of the browser106and/or of webpages120of the browser106during runtime or while the browser106is online. In other words, the memory consumption estimator210estimates an amount of memory (of the computing device102) consumed by the browser106or by webpages120running on the browser106. In examples herein, the memory consumption estimator210may determine memory consumption of individual webpages of the webpages120running in the browser106and/or may determine cumulative memory consumption of all webpages running in the browser106together (e.g., by accumulating the memory consumption of each of the webpages120running the in the browser106).

In some examples, the memory consumption estimator210may estimate the memory consumption of the webpages120of the browser106using heuristics of accessing the webpages120. The example memory consumption estimator210may determine a grade corresponding to the actual memory consumptions of the webpages120from a heuristics database in communication with the webpage refresh manager110. The example grade may be generated from an actual memory consumption measured from a previous instance that the webpages120was/were accessed. In some examples, grades may be generated based on a plurality of actual memory consumptions determined from a plurality of corresponding webpage accesses. For example, the grade may be based on an average memory consumption, a highest memory consumption of the memory consumptions (or a set of memory consumptions, such as a most recently measured set), a memory consumption of a most recent access, etc.

In examples herein, actual memory consumption information may be accessed via development tools (e.g., for the browser106) to determine memory consumption of the browser106during previous accesses of the webpages120. In many instances, such information from the development tools is not accessible during runtime (or while the browser is being executed/running webpages consuming memory), but is accessible when the browser is offline (i.e., when the browser106is not accessing a webpage and/or executing webpage content). Accordingly, a user and/or the webpage refresh manager110may retrieve memory consumption data from development tools of the browser106after the browser106runs/executes the webpages120. Accordingly, after a diagnostic or initial webpage access, the user and/or webpage refresh manager110may populate a heuristics database with memory consumption information corresponding to webpages120accessed by the browser106as indicated by the browser development tools. In some examples, the heuristics database may be limited to a particular set of webpages accessed by the browser120. For example, the heuristics database120may populate memory consumption information for webpages that have a particular domain (e.g., a domain of an entity seeking to manage memory consumption by a browser and refresh of webpages of the entity in accordance with examples herein). Accordingly, a heuristics database used by the memory consumption estimator210to estimate memory consumption for a browser may be for a dedicated entity, domain, or set of webpage(s) (e.g., frequently accessed webpages).

An example heuristics database used by the memory consumption estimator210ofFIG. 2may be implemented by an index, a table, a task graph or any other suitable data structure. In examples herein, the heuristics database may be a database stored in a memory or storage device of the computing device102and/or stored in a memory or storage device in communication with the computing device102(e.g., such as a cloud storage device, a network storage device, or any other type of storage device).

In some examples, the memory consumption estimator210may estimate the memory consumption of the webpages120of the browser106by measuring a length of time (or execution time) of a single thread execution of the webpages to activate a call back. For example, the memory consumption estimator may estimate an amount of time for a JavaScript setTimeout callback to activate and/or an amount of times the JavaScript setTimeout callback is activated during a period of time. Based on the measurements associated with a single thread execution time of a webpage or the webpages120of the browser120, the memory consumption estimator210may estimate the amount of memory consumed by the browser106and/or webpages120of the browser106. For example, the memory consumption estimator210may use or implement an index, a table, or any other type of data structure that indicates memory consumed for particular execution times associated with executing single thread executions of the webpages120of the browser120.

The example device analyzer220determines characteristics of the computing device102executing the browser106to determine a memory consumption threshold for the browser106. Accordingly, the device analyzer220may retrieve or identify characteristics of the computing device102from a processor and/or controller of the computing device102. Such characteristics may include processing capabilities (e.g., processor speeds, configurations/topologies, bandwidth, etc.), memory information (type, capacity, speed, etc.), and performance expectations. Accordingly, the device analyzer220may determine and/or estimate how much memory the browser106can afford to consume before degrading the performance of the computing device102(and thus negatively affecting the user experience). In some examples, the device analyzer220may periodically (or aperiodically, such as each time the browser106is opened) determine the characteristics of the computing device102to account for any potential dynamic abilities of the computing device102. For example, the device analyzer220may determine when a computing device102has limited resources (e.g., due to applications other than the browser106executing on the computing device), the computing device102adding or removing resources, processing power, etc. The example device analyzer220may then provide the characteristics of the computing device102to the threshold manager230to determine a memory consumption threshold for determining when to refresh the webpages120of the browser106.

The threshold manager230determines a memory consumption threshold used for refreshing the webpages120when the memory consumption threshold is satisfied (e.g., equaled, met, reached, exceeded, etc.) based on the characteristics of the computing device102determined by the device analyzer220. In examples herein, the threshold manager230may set an appropriate memory consumption threshold to refresh the webpages120of the browser106to prevent harm to the user experience of the browser106and/or the computing device102(e.g., by slowing the computing device102). For example, if the computing device102has relatively weak resources (e.g., a slow processor, less memory, etc.), then the threshold manager230may set a lower memory consumption threshold so the webpages are refreshed sooner than if the computing device102has relatively stronger resources (e.g., a faster processor, more memory, etc.) so the webpages120are refreshed longer.

The webpage refresher240may detect when the memory consumption of the browser106and/or the webpages120of the browser106satisfies the set memory consumption threshold based on information from the memory consumption estimator210. For example, the webpage refresher240may retrieve (e.g., via a query) the estimated memory consumption of the browser106from the memory consumption estimator210and/or periodically or aperiodically receive the estimated memory consumption from the memory consumption estimator210. The example webpage refresher240refreshes the webpage120of the browser106when the estimated memory consumption of the browser satisfies the memory consumption threshold set by the threshold manager230. The webpage refresher240may use any suitable technique to refresh the webpages120(e.g., re-execute or re-access the webpages, recall the content of the webpages120, etc.).

In some examples, the webpage refresher240may perform the refresh of the webpages120during a navigation operation of the browser106. Accordingly, the webpage refresher240may detect when the memory consumption threshold is satisfied and wait for the next navigation of the browser (e.g., which may be initiated by a user input or user interaction) before refreshing the webpages120of the browser106(so as not to refresh the webpages120while the user is accessing (e.g., reading) the content of the webpages120). Accordingly, the webpage refresher240may detect that the memory consumption threshold was satisfied, wait for a next navigation operation to be performed, detect that a navigation operation has been initiated, and refresh the webpage in response to the memory consumption threshold being satisfied and the navigation operation being initiated. For example, the navigation operation may be the user navigating to a new webpage in a tab or window of a browser106that is separate from webpages that have been loaded and kept in the background for a period of time consuming memory.

Accordingly, the webpage refresh manager110may dynamically refresh the webpages120of the browser based on an estimated memory consumption of the browser106and/or the webpages120. The webpage refresh manager110thus reduces or prevents memory leaks by the browser106by refreshing the webpages120of the browser106based on the estimated memory consumption.

While an example manner of implementing the webpage refresh manager110ofFIG. 1is illustrated inFIG. 2, at least one of the elements, processes and/or devices illustrated inFIG. 2may be combined, divided, re-arranged, omitted, eliminated and/or implemented in any other way. Further, the memory consumption estimator210, the device analyzer220, the threshold manager230, the webpage refresher240, and/or, more generally, the example webpage refresh manager110ofFIG. 2may be implemented by hardware and/or any combination of hardware and executable instructions (e.g., software and/or firmware). Thus, for example, any of the memory consumption estimator210, the device analyzer220, the threshold manager230, the webpage refresher240, and/or, more generally, the example webpage refresh manager110could be implemented by at least one of an analog or digital circuit, a logic circuit, a programmable processor, an application specific integrated circuit (ASIC), a programmable logic device (PLD) and/or a field programmable logic device (FPLD). When reading any of the apparatus or system claims of this patent to cover a purely software and/or firmware implementation, at least one of the memory consumption estimator210, the device analyzer220, the threshold manager230, and/or the webpage refresher240is/are hereby expressly defined to include a tangible machine readable storage device or storage disk such as a memory, a digital versatile disk (DVD), a compact disk (CD), a Blu-ray disk, etc. storing the executable instructions. Further still, the example webpage refresh manager110ofFIG. 2may include at least one element, process, and/or device in addition to, or instead of, those illustrated inFIG. 2, and/or may include more than one of any or all of the illustrated elements, processes and devices.

Flowcharts representative of example machine readable instructions for implementing the webpage refresh manager110ofFIG. 2are shown inFIGS. 3, 4, and 5. In this example, the machine readable instructions comprise program(s)/process(es) for execution by a processor such as the processor612shown in the example processor platform600discussed below in connection withFIG. 6. The program(s)/process(es) may be embodied in executable instructions (e.g., software) stored on a tangible machine readable storage medium such as a CD-ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), a Blu-ray disk, or a memory associated with the processor612, but the entire program/process and/or parts thereof could be executed by a device other than the processor612and/or embodied in firmware or dedicated hardware. Further, although the example program(s)/process(es) is/are described with reference to the flowcharts illustrated inFIGS. 3, 4, and/or5, many other methods of implementing the example the webpage refresh manager110may be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined.

The example process300ofFIG. 3begins with an initiation of the webpage refresh manager110(e.g., upon startup, upon instructions from a user, upon startup of a device or application implementing the webpage refresh manager110(e.g., the computing device102or the browser106), etc.). The example process300may be executed to dynamically refresh the webpages120of the browser106based on estimated memory consumption by the browser106(or the webpages120of the browser106) in accordance with examples herein. At block310, the memory consumption estimator210estimates memory consumption of a webpage (e.g., one of the webpages120ofFIG. 1) of a browser (e.g., the browser106). For example, the memory consumption estimator210may estimate the memory consumption based on heuristics for the webpage (e.g., seeFIG. 4) or single thread execution time (e.g., seeFIG. 5) of the webpage. In some examples, at block310, the webpages estimator310may estimate memory consumption and/or accumulate estimated memory consumption for a plurality of webpages opened in a plurality of tabs or windows of a browser.

At block320, the threshold manager230determines a memory consumption threshold for refreshing the webpage in the browser based on processing characteristics of a device executing the browser. The example processing characteristics of block320(e.g., processing power, memory capacity, bandwidth, etc.) may be determined by the device analyzer220. At block330, the webpage refresher240refreshes the webpage in the browser when the memory consumption satisfies (e.g., reaches, meets, or exceeds) the threshold330. For example, at block330, the webpage refresher240may monitor the estimated memory consumption estimated by the memory consumption estimator210and refresh the webpage when it reaches or exceeds the threshold determined by the threshold manager230. After block330, the example process300ends. In some examples, the process300may be iteratively executed for each webpage opened or running in a browser. In such examples, the webpage refresh manager330may refresh webpages of a browser when the accumulated estimated memory consumption satisfies the memory consumption threshold determined by the threshold manager230.

The example process400ofFIG. 4begins with an initiation of the webpage refresh manager110(e.g., upon opening of the browser106on the computing device102). The example process400ofFIG. 4may be executed to generate a heuristics database of memory consumption of accessing the webpages120via the browser106and to estimate memory consumption of a webpage using the heuristics of memory consumptions when re-accessing the webpages120. The example process400ofFIG. 4may be executed to implement block310ofFIG. 3.

At block410, the webpage refresh manager110(e.g., when a browser or webpage is offline) identifies memory consumption of the browser106that accessed one of the webpages120using an offline development tool of the browser106. For example, the offline development tool (e.g., an activity report) may provide information on memory consumption of previously accessed webpages120while the browser106was online. At block420, the webpage refresh manager110generates a grade for memory consumption of the webpage based on the memory consumption. The example grade may be an indication of the memory consumption by the browser when accessing the webpage. For example, the grade may be an identifier (e.g., a number, a letter, etc.) indicating an actual or approximate (e.g., a range) memory consumption of the browser106from accessing the webpage120(e.g., a Grade of 1 indicates at least 1 MB of memory consumption, a Grade of 2 indicates at least 2 MB of memory consumption, etc.). At block430, the webpage refresh manager110stores the grade for the webpage in a heuristics database in communication with the browser106(and/or the computing device102).

At block440ofFIG. 4, the memory consumption estimator210uses the grade for the webpage120when the webpage120is re-accessed by the browser106to estimate the memory consumption of the webpage120. Accordingly, while online, the example memory consumption estimator210may access a stored grade for the webpages120accessed by the browser106using heuristics stored in a database accessible by the browser106and/or the webpage refresh manager110. In some examples, the example process400may be iteratively executed for each webpage120accessed by the browser106. For example, block410may be executed on an initial access of the webpage120, and blocks410-440may be executed each time the webpage120is revisited (or re-accessed) by the browser106, with block440being executed while the webpage120and browser106are online when revisiting the webpage, and blocks410-430are executed once the browser goes offline. Furthermore, in such examples, the webpage refresh manager110may adjust grades in the heuristics database based on the memory consumption of subsequent accesses to the webpage (e.g., by averaging the memory consumption of previous accesses or a set of previous accesses, by taking the memory consumption of the most recent access, by the taking the highest memory consumption, etc.). In some examples, blocks410-430may be executed for a designated set of webpages120(e.g., webpages of a common domain of an entity) to populate the heuristics database with grades for the designated set of webpages, and block440is executed when the webpages are re-accessed a subsequent time. After block440, the example process400ends. In some examples, after block440, control may advance to block320ofFIG. 2.

The example process500ofFIG. 5begins with an initiation of the webpage refresh manager110. The example process500may be executed to estimate memory consumption of accessing the webpages120using single thread execution time from accessing the webpages. The example process500may be executed to implement block310ofFIG. 3.

At block510, the memory consumption estimator210measures single thread execution time when the browser106is accessing a webpage120. For example, the memory consumption estimator210may determine an amount of time (e.g., using a timer) for a JavaScript setTimeout with zero delay to activate a callback or may measure a number of times to activate the callback in a second. At block520, the memory consumption estimator210estimates the memory consumption from accessing the webpage based on the single thread execution time. For example, the memory consumption estimator210may implement or use an index or table correlating single thread execution time to memory consumption and estimate the memory consumption of a webpage120based on the memory consumption indicated in the index or table corresponding to the measured single thread execution time. Such an index or table may be calibrated or generated using any suitable technique (e.g., using heuristics). After block520, the example process500ends. In some examples, after block520, control may advance to block320ofFIG. 2.

As mentioned above, the example processes ofFIGS. 3, 4, and 5may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a tangible machine readable storage medium such as a hard disk drive, a flash memory, a read-only memory (ROM), a compact disk (CD), a digital versatile disk (DVD), a cache, a random-access memory (RAM) and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term tangible machine readable storage medium is expressly defined to include any type of machine readable storage device and/or storage disk and to exclude propagating signals and to exclude transmission media. As used herein, “computer readable storage medium” and “machine readable storage medium” are used interchangeably. Additionally or alternatively, the example processes ofFIGS. 3, 4, and/or5may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a non-transitory computer and/or machine readable medium such as a hard disk drive, a flash memory, a read-only memory, a compact disk, a digital versatile disk, a cache, a random-access memory and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term non-transitory machine readable medium is expressly defined to include any type of machine readable storage device and/or storage disk and to exclude propagating signals and to exclude transmission media.

As used herein, when the phrase “at least” is used as the transition term in a preamble of a claim, it is open-ended in the same manner as the term “comprising” is open ended. As used herein the term “a” or “an” may mean “at least one,” and therefore, “a” or “an” do not necessarily limit a particular element to a single element when used to describe the element. As used herein, when the term “or” is used in a series, it is not, unless otherwise indicated, considered an “exclusive or.”

FIG. 6is a block diagram of an example processor platform600capable of executing the instructions ofFIGS. 3, 4, and/or5to implement the webpage refresh manager110ofFIG. 2. The example processor platform600may be or may be included in any type of apparatus, such as a server, a personal computer, a mobile device (e.g., a cell phone, a smart phone, a tablet, etc.), a personal digital assistant (PDA), an Internet appliance or any other type of computing device.

The processor platform600of the illustrated example ofFIG. 6includes a processor612. The processor612of the illustrated example is hardware. For example, the processor612can be implemented by at least one integrated circuit, logic circuit, microprocessor or controller from any desired family or manufacturer.

The processor612of the illustrated example includes a local memory613(e.g., a cache). The processor612of the illustrated example is in communication with a main memory including a volatile memory614and a non-volatile memory616via a bus618. The volatile memory614may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM) and/or any other type of random access memory device. The non-volatile memory616may be implemented by flash memory, a persistent, byte-addressable memory accessible via a memory fabric and/or any other desired type of non-volatile memory device. Access to the main memory614,616is controlled by a memory controller.

The processor platform600of the illustrated example also includes an interface circuit620. The interface circuit620may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a peripheral component interconnect (PCI) express interface.

In the illustrated example, at least one input device622is connected to the interface circuit620. The input device(s)622permit(s) a user to enter data and commands into the processor612. The input device(s) can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, and/or a voice recognition system.

At least one output device624is also connected to the interface circuit620of the illustrated example. The output device(s)624can be implemented, for example, by display devices (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display, a cathode ray tube display (CRT), a touchscreen, a tactile output device, a light emitting diode (LED), a printer and/or speakers). The interface circuit620of the illustrated example, thus, may include a graphics driver card, a graphics driver chip or a graphics driver processor.

The processor platform600of the illustrated example also includes at least one mass storage device628for storing executable instructions (e.g., software) and/or data. Examples of such mass storage device(s)628include floppy disk drives, hard drive disks, compact disk drives, Blu-ray disk drives, RAID systems, and digital versatile disk (DVD) drives.

The coded instructions632ofFIGS. 3, 4, and/or5may be stored in the mass storage device628, in the local memory613in the volatile memory614, in the non-volatile memory616, and/or on a removable tangible machine readable storage medium such as a CD or DVD.

The above disclosed methods, apparatus and articles of manufacture may enable dynamic webpage refresh based on estimated memory consumption by a browser. Accordingly, in examples herein, user experience may be enhanced by preventing memory leaks of a browser that result in slowing a system or computing device implementing the browser. Furthermore, examples herein prevent unnecessary webpage refreshes when memory consumption of a browser is not harming the user experience (e.g., because the memory consumption does not reach a threshold to harm user experience as determined based on characteristics of the system or computing device implementing the browser).