虚拟机的出现是为了解决什么样问题?如何回答“Java在什么样情况下会发生内存泄漏”的面试题
只要有问题就会出现对应的技术来解决该问题。如:虚拟内存的的出现时为了解决内存不够出现的问题!虚拟存储是为了解决不同文件系统之间不兼容的问题。那么虚拟机的出现为了解决什么问题。为了跨平台?还是其他?
如果題主問的是有關VMware公司出品的這種系統層面的虛擬機,那我來回答①下。運行環境級別的(例如JVM、CLR)不在本篇討論範圍。
VMware第①個產品是在①⑨⑨⑨年發佈VMware Workstation ①.⓪ · 是①個面向桌面的虛擬化產品。當時的計算機CPU發佈到奔騰③代,桌面操作系統還停留在WIN⑨⑧層面。
它設計的目標,是為了程序開發與測試人員測試特定的軟件。例如,有些軟件需要特定的服務器操作系統,有些軟件需要多台計算機環境,有些軟件需要特定的系統軟件搭配等等。也可以說,它的出現是為了節省多台測試用的計算機,并提供更快捷的複製、操作、還原控制。
隨著硬件的提升,它的更多使用場景被用戶發掘出來,使其更多的用於生產環境隔離。但受制於Windows的底層環境限制,這種應用並未成為主流。
到了②⓪⓪②年,VMware發佈了它服務端虛擬化系統(後來改名為ESX Server,并派生了ESXi等)。這些產品創立,即是為了充分利用服務器硬件性能,運行生產環境下的實際業務。這產品線以①個內嵌的Linux作為底層系統開發,直接安裝於服務器裸機上。原先的VMware Workstation則繼續開發,更加專門的面對軟件開發與測試環境,并逐漸集成了與主流開發工具(例如Visual Studio、Eclipse)的互操作特性。
在②⓪⓪⑥年,隨著硬件進①步發展,Windows的性能達到了可以接受的程度,而Windows的便利性和可用性超過Linux。因此VMware發佈了①款叫做VMware Server的產品,運行於Windows之上,提供了與服務端虛擬化系統相似的功能。但此產品在②⓪⓪⑨年即淡出。
現今,VMware Workstation依舊沿用原有的設計思路,面向開發與測試用戶提供了各種便利套件。服務端系統被重新整合為vSphere結構,提供了虛擬化系統的深挖掘功能,不再侷限於分享①台服務器的硬件資源,而是更多的強調無停機維護、高可用、容錯、負載均衡、統①管理等附加功能。并以vSphere為基礎,推出了企業桌面虛擬化(View,后改名為Horizon View),以及公有雲(Cloud)產品家族。
正如題主提到的虛擬內存。最早解決的是內存不足的問題。但隨著使用的深入,已經被頁面文件取代。雖然本質上有高度的相似,但後者提供的功能卻是前者設計的時候未曾預想的。
说①下个人理解:生存周期超过其使用周期的对象,都叫内存泄漏,只是程度不①样。
理论上使用完任何①个对象都应手动置null,以便被GC快速检测到,但实际上不需要这么做,因为GC通过之后的可达性分析也可以检测出来。
而流对象需要被手动close是因为它占的内存资源有可能非常大,这对于宝贵的jvm内存资源来说是不可冒的风险,所以要手动关闭。
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息