I'm just moving my comment down as an answer...
All ggplot2 calls can be saved to a variable. So long as the variable remains intact, you can add additional layers to it. As with any other variable or environment - these plot variables can also be saved to a file for later use.
For example:
dat <- data.frame(x=rnorm(10000),y=rnorm(10000))
plot1 <- ggplot(dat, aes(x))
plot2 <- ggplot(dat, aes(y))
save(file="~/Plots.Rdata",list=ls()[grep("plot",ls())]) # Save vars named plot...
rm(plot1,plot2) # Remove
load("~/Plots.Rdata") # Reload Plots
plot1 + geom_histogram() # Add new layer later
plot2 + geom_histogram() # Add new layer later
UPDATE
In response to your comment, below, with respect to reducing the size:
You can convert your histogram into a density plot if you need it to be smaller. Note that you lose out on information when you do this and you're essentially just creating line plots of the density:
first.density <- density(dat$x) # Look at str(x.density) you'll see x and y
second.density <- density(dat$y) # Look at str(y.density) you'll see x and y
dat1 <- data.frame(x=first.density$x,y=first.density$y)
dat2 <- data.frame(x=second.density$x,y=second.density$y)
plot3 <- ggplot(dat1, aes(x,y))
plot4 <- ggplot(dat2, aes(x,y))
As you can see, the object size is significantly reduced:
object.size(plot1)
object.size(plot2)
object.size(plot3)
object.size(plot4)