▁environments ▁also ▁have ▁higher ▁memory ▁and ▁CPU ▁overhead s ▁than ▁optimized ▁native ▁applications , ▁but ▁these ▁overhead s ▁are ▁much ▁smaller ▁compared ▁with ▁full ▁machine ▁virtual ization . ▁ ▁Port able ▁Byte ▁Code ▁environments ▁such ▁as ▁Java ▁have ▁become ▁very ▁popular ▁on ▁the ▁server ▁where ▁a ▁wide ▁variety ▁of ▁hardware ▁exist ▁and ▁the ▁set ▁of ▁OS - specific ▁APIs ▁required ▁is ▁standard ▁across ▁most ▁Unix ▁and ▁Windows ▁flav ors . ▁ ▁Another ▁popular ▁feature ▁among ▁managed ▁run times ▁is ▁garbage ▁collection , ▁which ▁automatically ▁detect s ▁un used ▁data ▁in ▁memory ▁and ▁rec laim s ▁the ▁memory ▁without ▁the ▁developer ▁having ▁to ▁explicitly ▁invoke ▁free ( ing ) ▁operations . ▁ ▁Ne ut ral ▁view ▁of ▁application ▁virtual ization ▁ ▁Given ▁the ▁industry - bi ased ▁in ▁the ▁past , ▁to ▁be ▁more ▁neutral , ▁there ▁are ▁also ▁two ▁other ▁ways ▁to ▁look ▁at ▁the ▁Application ▁Level : ▁ ▁The ▁first ▁type ▁is ▁application ▁pack agers ▁( VM ware ▁Th in App , ▁Sof tr icity ) ▁whereas ▁the ▁other ▁is ▁application ▁comp ilers ▁( Java ▁and ▁. NET ). ▁Because ▁it ▁is ▁a ▁pack ager , ▁it ▁can ▁be ▁used ▁to ▁stream ▁applications ▁without ▁modifying ▁the ▁source ▁code , ▁whereas ▁the ▁latter ▁can ▁only ▁be ▁used ▁to ▁compile ▁the ▁source ▁code . ▁ ▁Another ▁way ▁to ▁look ▁at ▁it ▁is ▁from ▁the ▁Hyper visor ▁point ▁of ▁view . ▁The ▁first ▁one ▁is ▁" hyper visor " ▁in ▁user ▁mode , ▁whereas ▁the ▁other ▁is ▁" hyper visor " ▁in ▁runtime ▁mode .