GithubHelp home page GithubHelp logo

Comments (4)

hadley avatar hadley commented on August 17, 2024

Hmmm, interesting. I see the opposite:

lobstr::obj_size(baseenv()$.__S3MethodsTable__.)
#> 6,307,928 B
x <- sort(lobstr::obj_sizes(!!!as.list(baseenv()$.__S3MethodsTable__.)))
lobstr::obj_size(baseenv()$.__S3MethodsTable__.)
#> 12,894,608 B

Created on 2022-06-17 by the reprex package (v2.0.1)

I think this environment is the registry of S3 methods for all base functions, but it is surprising that it is so large for you.
I think it's only affected by the packages you load, so you might try creating a reprex by extracting just the library() statements from your shiny app.

The size of the individual methods is also surprising, but I can't reproduce it:

library(DBI)
library(tidyverse)

lobstr::obj_size(baseenv()$.__S3MethodsTable__.$toString.Id)
#> 4,320 B
baseenv()$.__S3MethodsTable__.$toString.Id
#> function (x, ...) 
#> {
#>     paste0("<Id> ", paste0(names(x@name), " = ", x@name, collapse = ", "))
#> }
#> <bytecode: 0x7fbcb887ca90>
#> <environment: namespace:DBI>
lobstr::obj_size(baseenv()$.__S3MethodsTable__.$toString.Id)
#> 4,320 B

Created on 2022-06-17 by the reprex package (v2.0.1)

If possible, I'd also recommend you trying this code in the latest version of R, in case this is a some buglet in base R.

from lobstr.

bersbersbers avatar bersbersbers commented on August 17, 2024

This issue is a few months old, so I don't have anything to reproduce my original results, unfortunately.

What I have found out in the meantime, however, is that the "memory leak" I was after turned out to be a couple of paired saveRDS and readRDS (of the same file, respectively), and these saveRDS operations involved ggplot2 objects, and hence the complete environments. I cannot say for sure whether that actually consumed a lot of memory or just made it appear so, but performance was certainly not good. When I replaced readRDS operations by reading the plots from an environment that I pass around, most memory and runtime issues disappeared. (Any they completely disappeared when I also removed the saveRDS calls, after reading your own tidyverse/ggplot2#3994 (comment)).

One (very much uninformed) hypothesis that I have is that apparent memory consumption goes down when inspection of the members of some __S3MethodsTable__ reveals that many duplicates of each other that use the same memory, but again, that is a very wild guess.

from lobstr.

bersbersbers avatar bersbersbers commented on August 17, 2024

Bottom line: my original issue is solved and I can hardly contribute to reproducing it. If you are not worried by the behavior that I observed (or the opposite one you are observing now), feel free to close this.

from lobstr.

hadley avatar hadley commented on August 17, 2024

I'll probably continue do a little light exploration for my own edification, but my experience from working on this sort of problem in the past is that fully understanding the phenomenon is likely to be a lot of work for little gain.

from lobstr.

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.