I first wondered why a language would store everything on the heap, when it has serious performance cost. For example, Java folks avoid creating unnecessary objects because the performance differences in using primitive types and objects are significant. but I found that languages like Python and Javascript, everything is an object and they are both interpreted and dynamically typed languages. So I wanted to know if the heap is the common ground for these languages.
Yes and no. Yes, simple interpreters and bytecode compilers will store every object on the heap; CPython does that. No, there exist smart implementations of dynamic languages that can do escape analysis and convert some heap allocations to stack allocations.
Stalin does this for Scheme, PyPy does it for Python, and maybe there's a JavaScript implementation about that performs this optimization as well.
they are both interpreted and dynamically typed languages
Interpretation is not a feature of languages but of their implementations, as the Lisp community has shown decades ago. Python, in its reference implementation, is compiled to bytecode, just like Java.