Comments (4)
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.
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.
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.
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)
- Release lobstr 1.1.1
- Use the ALTREP inspect method in sxp
- modify ast tree HOT 1
- obj_sizes gives NA for objects larger than 2^31 bytes
- Bad binding access HOT 22
- List R-core as contributor in DESCRIPTION HOT 1
- Request: make `ast()` not automatically unwrap quosures HOT 3
- List all parent environments for a given environment HOT 1
- obj_size() formatting for large objects
- Move `master` branch to `main` HOT 1
- `format()` method for `lobstr_bytes` HOT 1
- Use consistent type abbreviations
- Release lobstr 1.1.2
- Switch to rlang bytes formatting to eliminate prettyunits dep
- Error for incorrect sxp expand argument does not print list of acceptable values
- Is the output of `ast` wrong for functions with a namespace? HOT 1
- Upkeep for lobstr (2022)
- Reference count seems to be off
- `Error in obj_size_(dots, env, size_node(), size_vector()) : bad binding access` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lobstr.