резюме за двете виртуални машини на Java: Server и Client
--------------------------------------------------------------------от себе си----------------------------------------------------------------------- В момента само 64-битов режим поддържа сървърен режим
Сървърните виртуални машини стартират около 10% по-бавно от клиентските виртуални машини.Работи поне 10 пъти по-бързо от Client VM; Тъй като процесорът, паметта и твърдият диск на сървъра са по-мощни от клиентската машина, след като програмата бъде внедрена, тя трябва да се стартира в сървърен режим, за да се постигне по-добра производителност. JVM по подразбиране е 1M в клиентски режим и 64M за -Xmx. JVM по подразбиране е 128M в сървърен режим и 1024M за -Xmx.
server:启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计。
client:快速启动,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化; За GC: В клиен режима новото поколение избира сериен GC, а старото поколение избира сериен GC В сървърен режим новото поколение избира паралелно рециклиращо GC, а старото поколение избира паралелно GC Общо взето, има два начина да изберем нашето системно приложение: приоритет на пропускателната способност и приоритет на времето за пауза, като стандартният паралелен GC режим на сървъра се използва за приоритет на пропускателната способност, а режимът на конкурентен GC (CMS) се избира за приоритет на времето за пауза.
--------------------------------------------------------------------от браузъра------------------------------------------------------------------------- JDK има два типа виртуални машини: VM клиенти и VM сървърни приложения. Двете решения споделят кодовата база за хотспот на Java runtime, но използват различни компилатори за уникални характеристики както за клиента, така и за сървъра, като тези разлики включват писане на inline политики и heap стандартни настройки.
Въпреки че сървърите и клиентските виртуални машини са сходни, сървърните виртуални машини са специално настроени за максимални пикови работни скорости. Той е предназначен да изпълнява дългосрочни сървърни приложения, които изискват най-бърза скорост на работа, надхвърляща бързо стартиране или малък отпечатък от паметта по време на изпълнение.
Компилаторът на клиентските виртуални машини е компилатор, използван от класически виртуални машини и актуализации в реално време (JIT) чрез предишни версии на JDK. Клиентските виртуални машини осигуряват подобрена производителност при изпълнение на приложения и аплети. Клиентите на Java виртуалните машини в hotspot са специално адаптирани, за да намалят времето за стартиране на приложения и обхвата на паметта, за да станат особено подходящи за клиентски среди. Общо взето, клиентската система има по-добър графичен потребителски интерфейс.
Така че истинската разлика е и на ниво компилатора:
Клиентският компилатор на виртуалната машина не се опитва да извършва по-сложни оптимизации, извършвани от компилатора на сървърната виртуална машина, но по време на обмена отнема по-малко време за анализ и компилиране на дадено парче код. Това означава, че клиентските виртуални машини могат да стартират по-бързо и изискват по-малък капацитет от памет.
Сървърната виртуална машина съдържа усъвършенстван адаптивен компилатор, който поддържа много оптимизации на C++ компилатори за оптимизация, от същия тип, както и някои оптимизации, които не могат да се изпълнят с традиционни компилатори, като агресивни inline in virtual method calls. Това е конкурентно и конкурентно предимство, статичен компилатор. Техниките за адаптивна оптимизация са много гъвкави в подхода си и често превъзхождат дори напреднали техники за статичен анализ и компилация.
Когато стартира режимът -Server, скоростта е бавна, но след като започне, производителността се подобрява значително, защото: когато виртуалната машина е в -Client режим, тя използва лек компилатор с кодово име C1, а виртуалната машина, стартирана в -Server режим, използва компилатор с кодово име C2, който е сравнително добре компилиран от C1 компилатора, а производителността е по-висока след обслужване.
Обикновено, стига да промените реда на двете конфигурации на -server KNOWN и -client KNOWN,Предпоставката е, че както сървърната, така и клиентската папка съществуват в директорията /jre/bin на JAVA_HOMEсъответстващи на съответните им JVM
|