How to find memory usage by table?
what you can do is 


Find out the database that consumes highest memory in buffer pool using below :

SELECT COUNT(*) AS cached_pages_count , 
    ( COUNT(*) * 8.0 ) / 1024 AS MB , 
    CASE database_id 
      WHEN 32767 THEN 'ResourceDb' 
      ELSE DB_NAME(database_id) 
    END AS Database_name 
FROM sys.dm_os_buffer_descriptors 
GROUP BY database_id

Drill down the database using below query :

set nocount on;
set transaction isolation level read uncommitted;
select
   count(*)as cached_pages_count,
   (COUNT(*) * 8.0) / 1024 AS Total_MB_Occupied, -- convert pages into MB -  the page size is 8 KB for sql server
   obj.name as objectname,
   ind.name as indexname,
   obj.index_id as indexid
from sys.dm_os_buffer_descriptors as bd
inner join
(
    select       object_id as objectid,
                       object_name(object_id) as name,
                       index_id,allocation_unit_id
    from sys.allocation_units as au
        inner join sys.partitions as p
            on au.container_id = p.hobt_id
                and (au.type = 1 or au.type = 3)
    union all
    select       object_id as objectid,
                       object_name(object_id) as name,
                       index_id,allocation_unit_id
    from sys.allocation_units as au
        inner join sys.partitions as p
            on au.container_id = p.partition_id
                and au.type = 2
) as obj
    on bd.allocation_unit_id = obj.allocation_unit_id
left outer join sys.indexes ind 
on  obj.objectid = ind.object_id
and  obj.index_id = ind.index_id
where bd.database_id = db_id()
and bd.page_type in ('data_page', 'index_page')
group by obj.name, ind.name, obj.index_id
order by cached_pages_count desc



Reference : 


A quick look at: sys.dm_os_buffer_descriptors
What's swimming in your bufferpool?
sys.dm_os_buffer_descriptors aggregations -- more detailed info - what objects/structures/files/etc. are consuming the largest amount of space at a given time (or over time) within the Sql Server buffer pool.