g****t 发帖数: 31659 | 1 似乎这是个非常有意思的问题。
可以分组讨论:
Python
Java
Golang
C# |
n******t 发帖数: 4406 | 2 沒什麼關係吧。GC是runtime behaviour,本來就不在binary 是不是deterministic的
範圍之內。
但是所有的解釋型語言如果不把自己的解釋器或者Jit什麼之類的帶上,說binary
determinism都是一句空話的。
【在 g****t 的大作中提到】 : 似乎这是个非常有意思的问题。 : 可以分组讨论: : Python : Java : Golang : C#
|
g****t 发帖数: 31659 | 3 哦。我问的不太确切。
简化的版本可以有这样一个问题吧。
javac负责产生bytocode。然后jvm负责产生native code。
但是jvm有之前gc的历史记录/状态在里面,是否会对产生的native code有影响?
这问题没啥实际意义。逻辑上来讲似乎对同样的bytecode,
jvm解释出来的machine code可以不同的。
【在 n******t 的大作中提到】 : 沒什麼關係吧。GC是runtime behaviour,本來就不在binary 是不是deterministic的 : 範圍之內。 : 但是所有的解釋型語言如果不把自己的解釋器或者Jit什麼之類的帶上,說binary : determinism都是一句空話的。
|
n******t 发帖数: 4406 | 4 所有的這種需要解釋的語言都增加了運行時不確定性 - 因爲bytecode自己不能決定最
終執行了什麼code,但這個和編譯時的不確定性就是兩回事了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
當然是有的,但是這是運行時的狀態了。就好比即使是C你如果用了GC的library,肯定
每次運行時執行的代碼也是不一樣的。
【在 g****t 的大作中提到】 : 哦。我问的不太确切。 : 简化的版本可以有这样一个问题吧。 : javac负责产生bytocode。然后jvm负责产生native code。 : 但是jvm有之前gc的历史记录/状态在里面,是否会对产生的native code有影响? : 这问题没啥实际意义。逻辑上来讲似乎对同样的bytecode, : jvm解释出来的machine code可以不同的。
|