Where does all the memory go?

I've a method within an Event model..

  def batch_import(folder)
      require 'find'

      Find::find("#{SOURCE_PATH}/#{folder}") do |path|
          if path[-3..-1].downcase == 'jpg'
            @photo = Picture.new()
            @photo.data = File.new(path)
            @photo.filename = File.basename(path)
            @photo.caption = "none"
            self.pictures << @photo
            self.save
          end
      end
  end

Where Picture is ..

class Picture < FlexImage::Model
  file_store 'pictures'

  belongs_to :event, :counter_cache => true
  acts_as_list :scope => :event

  acts_as_solr :fields => [:caption]

end
and Event is..

class Event < ActiveRecord::Base
  has_many :pictures, :order => 'position',:dependent=>:destroy

When I run the code it uses a massive 1.5GB of memory to process 28
pictures. Ruby eventually returns the memory once you've browsed to
another view, but still?!?

Anyone have any ideas how/why?
should I be forcing garbage collection on @photo after each image?!?

I don't know if that'll matter. It looks like FlexImage is reading the
files into memory, and it still might be referenced in Event's
self.pictures array.

Thanks for the replies.

Bryan, Soory I'm a bit of a ruby newbie (still!!!), do you mean use
some form of syntax for the Find that returns all images as an array,
for processing?

also @photo = nil (is that what you mean?

Actually, on further testing it does look like it the 'self.pictures
<< @photo ' that eats up all the memory. Yes, each image is very
large. So time to look for a new solution. Shame.