GithubHelp home page GithubHelp logo

Heap snapshot support about hermes HOT 4 CLOSED

facebook avatar facebook commented on April 27, 2024
Heap snapshot support

from hermes.

Comments (4)

dulinriley avatar dulinriley commented on April 27, 2024 1

It is on our roadmap, @avp can say more

from hermes.

dulinriley avatar dulinriley commented on April 27, 2024

Sorry that we haven't gotten back to this issue in a while, but unfortunately we took it off our roadmap.

I'll summarize the main issues that we've faced trying to implement this:
The ideal serialized format of the heap would be something you could mmap in as writable pages, then reconstruct the stack and continue forward. The main issue to doing this is pointers, because addresses might not be the same when you resume. For JS pointers, we had this covered by compressing them into a heap segment number + offset (encoded as 32 bits, thus compressing a 64 bit pointer). The issue mostly had to do with native pointers to complicated off-heap structures.

So, failing to find a solution that allowed an mmap, we tried defining a serialization format for each object, and pointers to off-heap structures were copied into a separate portion of the file, and a fake pointer was inserted that would need a fixup pass. This mechanism required allocating all the memory piece-by-piece into the GC again, and this turned out to be too slow, for most test cases it was about the same as running the original JS from the beginning.

Another big blocker is what to do with HostObjects and HostFunctions. These are critical to React Native and are used very early in Hermes's startup path. We would have to provide a custom serializer, and these HostObjects might point to things like Java resources, or files, or various other things that would be very hard to deserialize, and might not even be usable when they were deserialized (like a short-lived URL, for example).

We haven't found anything that definitively solves these problems, so we took it off our roadmap.
If someone in the community knows a creative solution to some of these issues, we welcome suggestions or PRs showing how it could be done.

from hermes.

tmikov avatar tmikov commented on April 27, 2024

For the record, we do have heap serialization, but we don't actively support it.

from hermes.

rimmer avatar rimmer commented on April 27, 2024

For the record, we do have heap serialization, but we don't actively support it.

I know, that this is not a support forum, but Hermes does not have any so, I would appreciate if you could give some hints where to look for :)

Thank you

from hermes.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.