Sure. Most of the time you'd be better off with an explicit endpoint and protocol, using something like protobufs or capn-proto (which provide both serialization of objects and a relatively easy to use RPC interface for remote calls).
Making remote accesses explicit rather than implicit makes it a little more obvious to code readers how grossly expensive they will be.
CPU caches are good about correct cache invalidation (and must be). Software caches aren't always. Software caches don't always do a great job of bounding cache size, either.
Today's multi-core systems are really distributed systems, and the cpu cache does not hide that well enough that OS software doesn't have to work around it.
For example, kernels have to send IPIs (interprocessor interrupts) to other CPU cores to get them to perform some actions; cores sharing a specific cache line, or memory address that happens to alias to the same line in cache can create a 'ping-pong' effect that can severely degrade performance; L3 cache latency can be non-uniform depending on how far away the cache is from that particular core. The black box is breaking down as core counts increase.
Making remote accesses explicit rather than implicit makes it a little more obvious to code readers how grossly expensive they will be.