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 mathematical operations over the surfaces to simulate the existence of a dense "filled" object, by combining the surfaces of the intervening objects through cutting, intersecting and or subtracting operations. These operations happen only on the "shell" or faces of the mesh surface, to give the impression of having dense interior, when in reality it is not.
For that reason mostly only closed "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 representation methods more suited for these types of operations (and even these are all hollow as well, despite what the application best efforts make you believe otherwise).
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 because your mesh is either 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. These confuse the algorithms that calculate 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 (Alt + M > By Distance for 2.8+), to merge all open or overlapping geometry
Recalculate normals - In Edit Mode Ctrl + N (Alt + N for 2.8+)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.
Search for self intersections which are common in data obtained from scanned data like 3D Scans, photogrammetry, or other real world captured data. Solving this will be mostly a manual process as there are no current built in tools to handle them automatically, but you can turn on Mesh Analysis from the Overlays popover to get a good indication of problematic areas.
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.