All mesh - or 3D modeled virtual objects for that matter - are "hollow" or "empty inside" by definition, there is no such thing as mass, volume or matter inside them, with the possible exception of volumetric data like voxels or point clouds.
Boolean operations on meshes are always performed as a mathematical operation to simulate the existence of a dense "filled" object, by combining the surfaces of the intervening objects by cutting, intersecting and or subtracting them. These operations happen only on the "shell" or faces of the mesh surface, to give the impression of having dense matter inside them, when in reality there is none.
For that reason mostly only "closed" or watertight manifold meshes are easily usable in successful Boolean operations, outside of CAD applications that use either ACIS Solid Modeling, NURBS based surfaces or other geometry models more suited for these types of operations (and even these are all hollow as well, despite what the application may make you believe).
Open or inconsistent meshes (non-manifold) often give problems, errors, bad results, or fail completely.
That being said, in your case if you can't preform a Boolean operation on your object it is most likely either because your mesh is too complex, or there are some errors in your object like discontinuities, wholes, inconsistent normals, or any other problems that make your mesh non-manifold or non watertight and confuses the algorithm while calculating previously described operations.
What you need to do is clean it up and make sure these errors and discontinuities are gone. Stuff you can try:
Removing doubles - Edit Mode > W > Remove Doubles, to merge all open or overlapping geometry
Recalculate normals - In Edit Mode Ctrl + N to make sure all surfaces are facing the same direction consistently
Check for holes - In Edit Mode press Space Bar and search for Select non Manifold. That should highlight any remaining wholes, or problems with your mesh which you must then solve by hand, like overlapping faces, inconsistent normals, missing geometry, etc.
Ensure there are no coinciding or coplanar surfaces between the two operands - These usually confuse the algorithm making it unable to distinguish in from out.
After that your Boolean operation stand a better chance to produce good results, if your mesh is not too overly complex to successfully be processed. If that is the case the you should break it apart into smaller objects making sure that each and every one of them involved in Boolean operations is a watertight "closed" manifold mesh.