一段程序如何判定自己是否在虚拟机中运行?为什么样Java有GC还需要自己来关闭某些资源

发表时间:2018-01-16 11:30:01 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《vr培训哪家好vr培训学费多少?IdeapadY450 为什么样电池指示总是19%》相关知识。本篇中小编将再为您讲解标题一段程序如何判定自己是否在虚拟机中运行?为什么样Java有GC还需要自己来关闭某些资源。

我们无法知道宇宙是否是①段程序,那么①段程序能不能知道自己是否处于①个虚拟机里呢?

按现有的虚拟机(如VM),①段程序能否知道自己是否跑在VM上?如果可以,是不是说明VM的虚拟环境隔离得不够好?

----------------------------------------------

或者这么问吧:只要虚拟机想隔离,在里面跑的系统/程序永远无法知道是否身处其中?

檢測特定品牌或類型的虛擬機很容易。通常有特定的識別方式。比如VMware廠家虛擬機內的程序,可以通過讀取主板生產廠商屬性,從BIOS里讀取到VMware字樣的。

檢測到泛類型的虛擬機有①定難度,但是也有辦法,比如嘗試獲得CPU(由於虛擬機為了保持執行速度①般不會翻譯CPU指令──除了少量特殊應用情況),在比對CPU特徵庫,確認它支持虛擬化后,嘗試在上面執行虛擬化的指令。如果已在虛擬機內,則會無法完成(Nested VM問題)。

至於是否是環境隔離問題:虛擬機本來設計的目的就不是欺騙被虛擬的系統,而明確告訴系統被虛擬,對於其執行效率特異性優化以及授權相關問題都是有利的。所以目前主流虛擬機提供方案并不會刻意的隱藏虛擬化環境。

这里补充①个事情

java.io.FileInputStream#finalize()

/** * Ensures that the close method of this file input stream is * called when there are no more references to it. * * @exception IOException if an I/O error occurs. * @see java.io.FileInputStream#close() */ protected void finalize() throws IOException { if ((fd != null) } }

编后语:关于《一段程序如何判定自己是否在虚拟机中运行?为什么样Java有GC还需要自己来关闭某些资源》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《博瑞手机是杂牌么?高压电缆运行多少米相当于一台空载变压器》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题