äžé£ã®èšäºã§ãã¡ã¢ãªç®¡çã«é¢é£ãã誀解ã«åè«ããJavaãKotlinãScalaãGroovyãClojureãªã©ã®ææ°ã®ããã°ã©ãã³ã°èšèªã§ã®æ§é ã詳ãã調ã¹ãããšæããŸãããã®èšäºãããããã®èšèªã®å éšã§äœãèµ·ãã£ãŠããã®ããçè§£ããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸããæåã«ãJavaãKotlinãScalaãClojureãGroovyãããã³ãã®ä»ã®èšèªã§äœ¿çšãããJavaä»®æ³ãã·ã³ïŒJVMïŒã®ã¡ã¢ãªç®¡çã«ã€ããŠèª¬æããŸã ãã§ã¯ æåã®èšäºãç§ããã®èšäºãçè§£ããã®ã«æçšãªã¹ã¿ãã¯ãšããŒããšã®å·®ãã«ããŒããŸããã
JVMã¡ã¢ãªæ§é
ãŸããJVMã®ã¡ã¢ãªæ§é ãèŠãŠã¿ãŸãããããã®æ§é ã¯ãJDK11以éã§äœ¿çšãããŠã ãŸããããã¯ãJVMããã»ã¹ã§äœ¿çšå¯èœãªã¡ã¢ãªã§ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠå²ãåœãŠãããŸãã
ããã¯OSã«ãã£ãŠå²ãåœãŠããããã€ãã£ãã¡ã¢ãªã§ããããã®ãµã€ãºã¯ã·ã¹ãã ãããã»ããµãããã³JREã«ãã£ãŠç°ãªããŸããã©ã®åéãšãããã¯äœãç®çãšããŠããŸããïŒ
ããŒã
ããã¯ãJVMããªããžã§ã¯ããšåçããŒã¿ãæ ŒçŽããå Žæã§ããããã¯æå€§ã®ã¡ã¢ãªé åã§ãããã¬ããŒãžã³ã¬ã¯ã¿ãæ©èœããå Žæã§ããããŒããµã€ãºã¯ã
Xms
ïŒåæ
Xmx
ãµã€ãºïŒãã©ã°ãš ïŒæå€§ãµã€ãºïŒãã©ã°ã§å¶åŸ¡ã§ããŸã ãããŒãã¯å šäœãšããŠä»®æ³ãã·ã³ã«è»¢éãããã®ã§ã¯ãªããäžéšã¯ä»®æ³ã¹ããŒã¹ãšããŠäºçŽãããŸããããã«ãããããŒãã¯å°æ¥æ¡åŒµãããå¯èœæ§ããããŸããããŒãã¯ããè¥ããäžä»£ãšãå€ããäžä»£ã®ã¹ããŒã¹ã«åå²ãããŸãã
- è¥ãäžä»£ããŸãã¯ãæ°ãã空éãïŒæ°ãããªããžã§ã¯ããäœããšãªã¢ããšãã³ã¹ããŒã¹ãšãµãã€ããŒã¹ããŒã¹ã«åãããŠããŸããè¥ãäžä»£ã®ç®¡çé åã§ãããè¥ãã¬ããŒãžã³ã¬ã¯ã¿ãŒãïŒãã€ããŒGCïŒãããã¯ãè¥ããïŒè¥ãGCïŒãšãåŒã°ããŸãã
- ãã©ãã€ã¹ïŒããã¯ãæ°ãããªããžã§ã¯ããäœæãããšãã«ã¡ã¢ãªãå²ãåœãŠãããå Žæã§ãã
- ãµãã€ããŒãšãªã¢ïŒãã€ããŒã¬ããŒãžã³ã¬ã¯ã¿ãŒããæ®ã£ããªããžã§ã¯ããä¿åãããå Žæã§ãããã®é åã¯ãS0ãšS1ã®2ã€ã®éšåã«åå²ãããŸãã
- æ§äžä»£ããŸãã¯ãã¹ãã¬ãŒãžãïŒTenured SpaceïŒïŒããã«ã¯ããžã¥ãã¢ã¬ããŒãžã³ã¬ã¯ã¿ãŒã®åç¶æéäžã«æå€§ã¹ãã¬ãŒãžãããå€ã«éãããªããžã§ã¯ããå«ãŸããŸãããã®ã¹ããŒã¹ã¯ã¡ãžã£ãŒGCã«ãã£ãŠç®¡çãããŸãã
ã¹ã¬ããã¹ã¿ãã¯
ããã¯ãã¹ã¬ããããšã«1ã€ã®ã¹ã¿ãã¯ãå²ãåœãŠãããã¹ã¿ãã¯é åã§ããããã¯ãã¡ãœãããšé¢æ°ã®ãã¬ãŒã ããªããžã§ã¯ããžã®ãã€ã³ã¿ãªã©ãã¹ã¬ããåºæã®éçããŒã¿ãæ ŒçŽãããå Žæã§ããã¹ã¿ãã¯ã¡ã¢ãªã®ãµã€ãºã¯ããã©ã°ã䜿çšããŠèšå®ã§ããŸã
Xss
ã
ã¡ã¿ã¹ããŒã¹
ããã¯ãã€ãã£ãã¡ã¢ãªã®äžéšã§ãããããã©ã«ãã§ã¯äžéã¯ãããŸããã以åã®ããŒãžã§ã³ã®JVMã§ã¯ããã®ã¡ã¢ãªã¯æ°žç¶çæã¹ããŒã¹ïŒæ°žç¶çæïŒPermGenïŒã¹ããŒã¹ïŒãšåŒã°ããŠããŸãã ãã¯ã©ã¹ããŒããŒã¯ãã¯ã©ã¹å®çŸ©ããã®äžã«æ ŒçŽããŸããããã®ã¹ããŒã¹ã倧ãããªããšãOSã¯ããã«ä¿åãããŠããããŒã¿ãRAMããä»®æ³ã¡ã¢ãªã«ç§»åããå¯èœæ§ããããã¢ããªã±ãŒã·ã§ã³ã®é床ãäœäžããå¯èœæ§ããããŸããããã¯ããã©ã°
XX:MetaspaceSize
ã䜿çšã㊠MetaSpaceã®ãµã€ãºãèšå®ããããšã§åé¿ã§ã
-XX:MaxMetaspaceSize
ãŸãããã®å Žåãã¢ããªã±ãŒã·ã§ã³ã¯ã¡ã¢ãªãšã©ãŒãçºè¡ããå¯èœæ§ããããŸãã
ã³ãŒããã£ãã·ã¥
ããã¯ã Just In TimeïŒJITïŒã³ã³ãã€ã©ãŒããé »ç¹ã«ã¢ã¯ã»ã¹ããå¿ èŠã®ããã³ã³ãã€ã«æžã¿ã³ãŒããããã¯ãæ ŒçŽããå Žæã§ããéåžžãJVMã¯ãã€ãã³ãŒãããã€ãã£ããã·ã³ã³ãŒãã«è§£éããŸãããJITã³ã³ãã€ã©ã«ãã£ãŠã³ã³ãã€ã«ãããã³ãŒãã¯è§£éããå¿ èŠã¯ãªãããã§ã«ãã€ãã£ã圢åŒã§ããããã®ã¡ã¢ãªé åã«ãã£ãã·ã¥ãããŠããŸãã
å ±æã©ã€ãã©ãª
ããã¯ãå ±æã©ã€ãã©ãªã®ãã€ãã£ãã³ãŒããä¿åãããå Žæã§ããã¡ã¢ãªã®ãã®é åã¯ãããã»ã¹ããšã«1åã ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠããŒããããŸãã
JVMã¡ã¢ãªäœ¿çšéïŒã¹ã¿ãã¯ãšããŒã
次ã«ãå®è¡å¯èœããã°ã©ã ãã¡ã¢ãªã®æãéèŠãªéšåãã©ã®ããã«äœ¿çšããããèŠãŠã¿ãŸãããã以äžã®ã³ãŒãã䜿çšããŠã¿ãŸããããæ£ç¢ºæ§ã®ããã«æé©åãããŠããªããããäžèŠãªäžé倿°ã誀ã£ã修食åãªã©ã®åé¡ã¯ç¡èŠããŠãã ããããã®ä»äºã¯ãã¹ã¿ãã¯ãšããŒãã®äœ¿çšãèŠèŠåããããšã§ãã
class Employee {
String name;
Integer salary;
Integer sales;
Integer bonus;
public Employee(String name, Integer salary, Integer sales) {
this.name = name;
this.salary = salary;
this.sales = sales;
}
}
public class Test {
static int BONUS_PERCENTAGE = 10;
static int getBonusPercentage(int salary) {
int percentage = salary * BONUS_PERCENTAGE / 100;
return percentage;
}
static int findEmployeeBonus(int salary, int noOfSales) {
int bonusPercentage = getBonusPercentage(salary);
int bonus = bonusPercentage * noOfSales;
return bonus;
}
public static void main(String[] args) {
Employee john = new Employee("John", 5000, 5);
john.bonus = findEmployeeBonus(john.salary, john.sales);
System.out.println(john.bonus);
}
}
ããã§ã¯ãäžèšã®ããã°ã©ã ãã©ã®ããã«å®è¡ãããã¹ã¿ãã¯ãšããŒããã©ã®ããã«äœ¿çšããããã確èªã§ã
ãŸããhttps ïŒ //files.speakerdeck.com/presentations/9780d352c95f4361bd8c6fa164554afc/JVM_memory_use.pdfã芧ã®
ãšããïŒ
- å颿°åŒã³åºãã¯ããã¬ãŒã ãããã¯ãšããŠå®è¡ã¹ã¿ãã¯ã®ã¹ã¬ããã«ããã·ã¥ãããŸãã
- åŒæ°ãšæ»ãå€ãå«ããã¹ãŠã®ããŒã«ã«å€æ°ã¯ã颿°ãã¬ãŒã ãããã¯å ã®ã¹ã¿ãã¯ã«æ ŒçŽãããŸãã
- int .
- Employee, Integer String , . .
- , , .
- , .
- ().
- , .
ã¹ã¿ãã¯ã¯ãJVMã§ã¯ãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠèªåçã«ç®¡çãããŸãããããã£ãŠã圌ã®ç¹å¥ãªäžè©±ãããå¿ èŠã¯ãããŸãããããããããŒãã¯ãã®æ¹æ³ã§ç®¡çãããªããªããŸãããããã¯åçããŒã¿ãå«ãã¡ã¢ãªã®æå€§é åã§ãããããææ°é¢æ°çã«å¢å€§ããå¯èœæ§ããããããã°ã©ã ã¯æéã®çµéãšãšãã«ãã¹ãŠã®ã¡ã¢ãªãå æããå¯èœæ§ããããŸããããã«ãããŒãã¯åŸã ã«æçåããããããã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãäœäžããŸããJVMã¯ããããã®åé¡ã®è§£æ±ºã«åœ¹ç«ã¡ãŸããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã䜿çšããŠããŒããèªåçã«ç®¡çããŸãã
JVMã¡ã¢ãªç®¡çïŒã¬ããŒãžã³ã¬ã¯ã·ã§ã³
ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã«éåžžã«éèŠãªåœ¹å²ãæããèªåããŒã管çãèŠãŠã¿ãŸããããããã°ã©ã ãïŒå€ã«å¿ããŠ
Xmx
ïŒäœ¿çšå¯èœãªã¡ã¢ãªãããå€ãã®ã¡ã¢ãªãããŒãã«å²ãåœãŠã ããšãããš ãã¡ã¢ãªäžè¶³ãšã©ãŒãçºçããŸãã
JVMã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã䜿çšããŠããŒãã管çããŸããæ°ãããªããžã§ã¯ããäœæããããã®ã¹ããŒã¹ã確ä¿ããããã«ãJVMã¯ãå€ç«ãããªããžã§ã¯ããã€ãŸãã¹ã¿ãã¯ããçŽæ¥ãŸãã¯éæ¥çã«åç §ãããªããªã£ããªããžã§ã¯ãã«ãã£ãŠå æãããŠããã¡ã¢ãªãã¯ãªãŒã³ã¢ããããŸãã
JVMã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ä»¥äžãæ åœããŸãã
- OSããã¡ã¢ãªãååŸããOSã«æ»ããŸãã
- èŠæ±ã«å¿ããŠãå²ãåœãŠãããã¡ã¢ãªãã¢ããªã±ãŒã·ã§ã³ã«è»¢éããŸãã
- å²ãåœãŠãããã¡ã¢ãªã®ã©ã®éšåããŸã ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠäœ¿çšãããŠããããå€å¥ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããããã«æªäœ¿çšã®ã¡ã¢ãªãèŠæ±ããŸãã
JVMã®ã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯äžä»£ããšã«æ©èœããŸãïŒããŒãå ã®ãªããžã§ã¯ãã¯å¹Žéœ¢å¥ã«ã°ã«ãŒãåãããããŸããŸãªæ®µéã§ã¯ãªãŒã³ã¢ãããããŸãïŒãããŸããŸãªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¢ã«ãŽãªãºã ããããŸãããMarkïŒSweepãæãäžè¬çã«äœ¿çšãããŠããã¢ã«ãŽãªãºã ã§ãã
ã¬ããŒãžã³ã¬ã¯ã¿ãŒããŒã¯ïŒã¹ã€ãŒã
JVMã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ããã«ããã¯ã°ã©ãŠã³ãã§å®è¡ãããå¥ã®ããŒã¢ã³ã¹ã¬ããã䜿çšããŸãããã®ããã»ã¹ã¯ãç¹å®ã®æ¡ä»¶ãæºãããããšãã«éå§ãããŸããMarkïŒSweepã³ã¬ã¯ã¿ãŒã¯éåžž2ã€ã®æ®µéã§æ©èœãã䜿çšããã¢ã«ãŽãªãºã ã«ãã£ãŠã¯3çªç®ã®æ®µéã远å ãããããšããããŸãã
- ããŒã¯ã¢ããïŒæåã«ãã³ã¬ã¯ã¿ãŒã¯ã䜿çšãããŠãããªããžã§ã¯ããšäœ¿çšãããŠããªããªããžã§ã¯ããå€å¥ããŸããã¹ã¿ãã¯ãã€ã³ã¿ã«ãã£ãŠäœ¿çšãŸãã¯ã¢ã¯ã»ã¹ããããã®ã¯ãååž°çã«çåãšããŠããŒã¯ãããŸãã
- åé€ïŒã³ã¬ã¯ã¿ãŒã¯ããŒãããŠã©ãŒã¯ã¹ã«ãŒããçåãšããŒã¯ãããŠããªããã¹ãŠã®ãªããžã§ã¯ããåé€ããŸãããããã®ã¡ã¢ãªäœçœ®ã¯ç©ºããšããŠããŒã¯ãããŸãã
- å§çž®ïŒæªäœ¿çšã®ãªããžã§ã¯ããåé€ããåŸãæ®ã£ãŠãããã¹ãŠã®ãªããžã§ã¯ããäžç·ã«ãªãããã«ç§»åãããŸããããã«ãããæçåãæžå°ããæ°ãããªããžã§ã¯ããžã®ã¡ã¢ãªå²ãåœãŠãé«éåãããŸãã
ãã®ã¿ã€ãã®ã³ã¬ã¯ã¿ãŒã¯ãåé€ãããŠããéãã¢ããªã±ãŒã·ã§ã³ã«äžæåæ¢ããããããstop-the-worldãšãåŒã°ããŸãã
JVMã«ã¯ãéžæå¯èœãªããã€ãã®ç°ãªãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã¢ã«ãŽãªãºã ãçšæãããŠãããJDKã«ãã£ãŠã¯ãããã«å€ãã®ãªãã·ã§ã³ãååšããå ŽåããããŸãïŒããšãã°ãOpenJDKã®Shenandoahã³ã¬ã¯ã¿ãŒ ïŒãããŸããŸãªå®è£ ã®äœæè ã¯ãããŸããŸãªç®æšãç®æããŠããŸãã
- ã¹ã«ãŒãããïŒã¢ããªã±ãŒã·ã§ã³ã®å®è¡ã§ã¯ãªããã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã«è²»ããããæéãçæ³çã«ã¯ãã¹ã«ãŒããããé«ããã€ãŸãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®äžæåæ¢ãçãå¿ èŠããããŸãã
- äžæåæ¢ã®æéïŒã¬ããŒãžã³ã¬ã¯ã¿ãŒãã¢ããªã±ãŒã·ã§ã³ã®å®è¡ã劚害ããæéãçæ³çã«ã¯ãäžæåæ¢ã¯éåžžã«çãããå¿ èŠããããŸãã
- ããŒããµã€ãºïŒçæ³çã«ã¯å°ããå¿ èŠããããŸãã
JDK11ã®ã³ã¬ã¯ã¿ãŒ
JDK11ã¯çŸåšã®LTEãªãªãŒã¹ã§ãã以äžã¯ãããã§äœ¿çšå¯èœãªã¬ããŒãžã³ã¬ã¯ã¿ãŒã®ãªã¹ãã§ããJVMã¯ãçŸåšã®ããŒããŠã§ã¢ãšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«å¿ããŠããã©ã«ãã§ã¬ããŒãžã³ã¬ã¯ã¿ãŒãéžæããŸããã©ãžãªãã¿ã³ã䜿çšããŠããã€ã§ãããã«ãŒã匷å¶çã«éžæã§ããŸã
-XX
ã
- : , , .
-XX:+UseSerialGC
. - : , . , / .
-XX:+UseParallelGC
. - Garbage-First (G1): ( ). , . .
-XX:+UseG1GC
. - Z: , , JDK11. . , stop-the-world. , / ( ).
-XX:+UseZGC
.
éžæãããŠããã³ã¬ã¯ã¿ãŒã«é¢ä¿ãªããJVMã¯ãžã¥ãã¢ã³ã¬ã¯ã¿ãŒãšã·ãã¢ã³ã¬ã¯ã¿ãŒã®2çš®é¡ã®ã¢ã»ã³ããªã䜿çšããŸãã
ãžã¥ãã¢ã¢ã»ã³ãã©ãŒ
è¥ãäžä»£ã®ç©ºéã®æž æœããšã³ã³ãã¯ãããç¶æããŸããããã¯ãJVMãæ°ãããªããžã§ã¯ãã«å¯Ÿå¿ããããã«å¿ èŠãªã¡ã¢ãªã倩åœã§ååŸã§ããªãå Žåã«èµ·åãããŸããæåã¯ãããŒãã®ãã¹ãŠã®é åã空ã§ãããã©ãã€ã¹ãæåã«ãã£ã±ãã«ãªããæ¬¡ã«çåè ã®ãšãªã¢ãæåŸã«ã¹ãã¬ãŒãžããã£ã±ãã«ãªããŸãã
ãã®ã³ã¬ã¯ã¿ãŒã®ããã»ã¹ã¯ãhttpsïŒ//files.speakerdeck.com/presentations/f4783404769145f4b990154d0cc05629/JVM_minor_GC.pdfã§ç¢ºèªã§ããŸã
ã
- ãã©ãã€ã¹ã«ãã§ã«ãªããžã§ã¯ãããããšããŸãããïŒãããã¯01ãã06ã¯äœ¿çšæžã¿ãšããŠããŒã¯ãããŠããŸãïŒã
- ã¢ããªã±ãŒã·ã§ã³ã¯æ°ãããªããžã§ã¯ãïŒ07ïŒãäœæããŸãã
- JVM , , JVM .
- ( ), â ().
- JVM S0 S1 «» (To Space), S0. «» , , , .
- , .
- , - , ( 07 13 ).
- (14).
- JVM , , JVM .
- , , « ».
- JVM «» S1, S0 «». «» «» (S1), , . , «», , (premature promotion). , .
- «» (S0), .
- ããã¯ãžã¥ãã¢ã³ã¬ã¯ã¿ãŒã»ãã·ã§ã³ããšã«ç¹°ãè¿ãããçåè ã¯S0ãšS1ã®éãç§»åãã幎霢ãäžãããŸããæå®ããããæå€§ãããå€ãïŒããã©ã«ãã§ã¯15ïŒã«éãããšããªããžã§ã¯ãã¯ãã¹ãã¬ãŒãžãã«ç§»åãããŸãã
ãžã¥ãã¢ã³ã¬ã¯ã¿ãŒãè¥ãäžä»£ã®ç©ºéã®èšæ¶ãã©ã®ããã«ã¯ãªãŒã³ã¢ããããããèŠãŸãããããã¯äžçãæ¢ããããã»ã¹ã§ãããéåžžã«é«éã§ãããããéåžžããã®æéã¯ç¡èŠã§ããŸãã
ã·ãã¢ã¢ã»ã³ãã©ãŒ
æ§äžä»£ã®ã¹ããŒã¹ïŒã¹ãã¬ãŒãžïŒã®æž æœããšã³ã³ãã¯ãããç£èŠããŸããæ¬¡ã®ããããã®æ¡ä»¶äžã§å®è¡ãããŸãã
- éçºè
ã¯ããã°ã©ã ãåŒã³åºããŸã
System
ãgc()
ãŸãã¯Runtime.getRunTime().gc()
ã - JVMã¯ããžã¥ãã¢ã³ã¬ã¯ã¿ãŒã®éå»ã®ã»ãã·ã§ã³ã®çµæãšããŠã¹ãã¢ããã£ã±ãã§ãããããã¹ãã¢ãã¡ã¢ãªãŒäžè¶³ã§ãããšå€æããŸãã
- ãžã¥ãã¢ã³ã¬ã¯ã¿ãŒã®å®è¡äžã«ãJVMããã©ãã€ã¹ãŸãã¯ãµãã€ããŒãšãªã¢ã§ååãªã¡ã¢ãªãååŸã§ããªãå Žåã
- JVMã«ãã©ã¡ãŒã¿ãèšå®ãã
MaxMetaspaceSize
æ°ããã¯ã©ã¹ãããŒãããã®ã«ååãªã¡ã¢ãªããªãå Žåã
ã·ãã¢ã³ã¬ã¯ã¿ãŒã®äœæ¥ããã»ã¹ã¯ããžã¥ãã¢ã³ã¬ã¯ã¿ãŒãããåçŽã§ãã
- å€ãã®ãžã¥ãã¢ã³ã¬ã¯ã¿ãŒã»ãã·ã§ã³ãçµéããã¹ãã¬ãŒãžãã»ãŒãã£ã±ãã«ãªã£ããšããŸããããJVMã¯ãå€ãã³ã¬ã¯ã¿ãŒãå®è¡ããããšã決å®ããŸãã
- ã¹ãã¬ãŒãžã§ã¯ãã¹ã¿ãã¯ãã€ã³ã¿ãŒãããªããžã§ã¯ãã°ã©ããååž°çã«ãã©ããŒã¹ããäœ¿çšæžã¿ãªããžã§ã¯ããïŒäœ¿çšæžã¿ã¡ã¢ãªïŒãšããŠããŒã¯ããæ®ããã¬ããŒãžïŒå€±ãããïŒãšããŠããŒã¯ããŸããã·ãã¢ã³ã¬ã¯ã¿ãŒããžã¥ãã¢ã³ã¬ã¯ã¿ãŒã®ä»äºäžã«ç«ã¡äžããããå Žåã圌ã®ä»äºã¯è¥ãäžä»£ã®ã¹ããŒã¹ïŒæ¥œåãšçåè ã®ãšãªã¢ïŒãšé庫宀ãã«ããŒããŠããŸãã
- ã³ã¬ã¯ã¿ãŒã¯ãå€ç«ãããªããžã§ã¯ãããã¹ãŠåé€ããã¡ã¢ãªãåå©çšããŸãã
- å€ãã³ã¬ã¯ã¿ãŒã®äœæ¥äžã«ããŒãã«ãªããžã§ã¯ããæ®ã£ãŠããªãå ŽåãJVMã¯ã¡ã¿ã¹ããŒã¹ããã¡ã¢ãªãŒãåå©çšããããŒããããã¯ã©ã¹ãã¡ã¿ã¹ããŒã¹ããåé€ããŸãïŒãããå®å šãªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®å ŽåïŒã
çµè«
JVMã®æ§é ãšã¡ã¢ãªç®¡çã«ã€ããŠèª¬æããŸãããããã¯å®å šãªèšäºã§ã¯ãããŸãããç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«åãããŠã«ã¹ã¿ãã€ãºããããã®ããè€éãªæŠå¿µãæ¹æ³ã®å€ãã«ã€ããŠã¯èª¬æããŠããŸããã詳现ã«ã€ããŠã¯ããã¡ããã芧 ãã ããã
ããããã»ãšãã©ã®JVMéçºè ïŒJavaãKotlinãScalaãClojureãJRââubyãJythonïŒã«ãšã£ãŠããã®éã®æ å ±ã§ååã§ããããŸãããã°ãã¡ã¢ãªãªãŒã¯ã«é¢ããããŸããŸãªåé¡ãåé¿ããŠãããåªããã³ãŒããèšè¿°ããããå¹ççãªã¢ããªã±ãŒã·ã§ã³ãäœæã§ããããã«ãªããŸãã