Usando selenio, tomé una instantánea de la memoria de un sitio web con driver.execute_script(":takeHeapSnapshot") y extraje sus metadatos:
{ "snapshot": { "meta": { "node_fields": [ "type", "name", "id", "self_size", "edge_count", "trace_node_id", "detachedness" ], "node_types": [ ["hidden", "array", "string", "object", "code", "closure", "regexp", "number", "native", "synthetic", "concatenated string", "sliced string", "symbol", "bigint"], "string", "number", "number", "number", "number", "number" ], "edge_fields": [ "type", "name_or_index", "to_node" ], "edge_types": [ ["context", "element", "property", "internal", "hidden", "shortcut", "weak"], "string_or_number", "node" ], "trace_function_info_fields": [ "function_id", "name", "script_name", "script_id", "line", "column" ], "trace_node_fields": [ "id", "function_info_index", "count", "size", "children" ], "sample_fields": [ "timestamp_us", "last_assigned_id" ], "location_fields": [ "object_index", "script_id", "line", "column" ] }, "node_count": 6182075, "edge_count": 17793245, "trace_function_count": 0 } }¿Alguien puede explicar, por favor, qué significa cada campo y cómo usar esa información para extraer datos? ¿Qué son los nodos, los bordes, los campos de ubicación, etc.? Como ejemplo, digamos que tengo un ArrayBuffer en el montón cuyo tamaño conozco (y es único) y quiero recuperar esta matriz. ¿Es posible hacerlo con la instantánea?
El grupo de metacampos explica el contenido de las diferentes matrices de la instantánea.
La instantánea tiene la matriz de nodos. Esta matriz tiene 7 números para cada nodo en el montón y la matriz node_fields describe el significado de todos estos 7 números.
al mismo tiempo, la matriz node_types describe los tipos de estos 7 números. Por ejemplo, si tiene los siguientes 7 números en la matriz de nodos [ ....., 2, 9, 13, 42, 0, 0, 0, ......
luego el nodo N en el montón
La matriz de bordes tiene un triplete de números para cada borde y puede ver los nombres de cada número en los campos de bordes y los tipos en la matriz de tipos de bordes. Por ejemplo, el triplete 2, 17, 79 en la matriz de bordes en el desplazamiento 0 significa:
Espero que esta explicación pueda darle alguna luz sobre cómo entender el contenido de la instantánea del montón.