เพื่อน ๆ ที่เขียนโปรแกรมด้วย Java หลาย ๆ คนอาจจะยังไม่รู้จักว่า JVM นั้นมันคืออะไร... ทำงานอย่างไร...
.
วันนี้แอดจะมาสรุปวิธีการทำงานของ JVM ให้เพื่อน ๆ พอที่จะเห็นภาพกัน หาพร้อมแล้วไปอ่านกันนนน
.
🔹 JVM (Java Virtual Machine) - เป็นเอ็นจิ้นที่จัดเตรียมสภาพแวดล้อมเพื่อรันโค้ด Java ซึ่ง JVM มีหน้าที่รับผิดชอบในการแปลง Bytecode เป็นรหัสเฉพาะเครื่อง ซึ่งเจ้า JVM นี้จะสามารถติดตั้งได้บนทุก Platform ไม่ว่าจะเป็น Unix, Linux หรือ Windows
.
⚙️ วิธีการทำงานของ JVM แบ่งได้ดังนี้
🌟 Class Loader Subsystem
เป็นส่วนที่ใช้จัดการ Class Loader Subsystem โดยจะอ่านไฟล์ .class และสร้างเป็น Bytecode บันทึกไว้ใน Method Area จากนั้นจะสร้าง Object เพื่อเป็นตัวแทนไฟล์ไว้ใน Heap Memory
.
🌟 Runtime Data Area (JVM Memory)
ส่วนนี้จะเป็นการจัดสรรพื้นที่ของ Memory ให้เหมาะสม เพื่อนำไปใช้งานในแต่ละส่วน ได้แก่ Method Area , Heap Area, Stack Area, PC Register, Native Method Stack นั่นเอง
.
🌟 Execution Engine
เป็นส่วนที่ใช้ควบคุมกระบวนการทำงานต่าง ๆ ซึ่ง Bytecode ที่อยู่ใน Runtime Data Area จะถูกประมวลผลด้วย Execution Engine โดยจะอ่าน Bytecode และประมวลผลทีละบรรทัด
.
🌟 Native Method Interface
เป็น Interface ที่ใช้โต้ตอบกับ Native Method Library ทำให้ JVM สามารถเรียกใช้งาน C/C++ library ได้นั่นเอง
🌟 Native Method Library
เป็นที่รวบรวม Native Library ที่จำเป็นต่อการใช้งานใน Native Method Interface นั่นเอง
.
จบกันไปแล้วววว! หากใครมีอะไรเพิ่มเติม สามารถคอมเมนต์พูดคุยกันได้เลยน้าาา และหวังว่าจะเป็นประโยชน์กับเพื่อน ๆ นะคร้าบบบบ 🥰
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
stack heap memory 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最讚貼文
การเขียนโปรแกรมเชิงวัตถุ หรือ Object Oriented Programming (OOP)
ข้อมูลกับฟังก์ชั่น จะห่อรวมกันเป็นก้อนเดียวกัน เรียกว่า "encapsulation"
ซึ่งข้อมูลกับฟังก์ชั่น ที่เก็บรวมกันเป็นก้อนๆ จะเก็บไว้ในหน่วยความจำ
ก้อนดังกล่าวในหน่วยความจำจะเรียกว่า อ็อบเจ็กต์ (Object)
.
ภาษาเขียนโปรแกรมส่วนใหญ่จะเก็บอ็อบเจ็กต์
ไว้ในหน่วยความจำที่เรียกว่า heap memory
แยกต่างหาจาก stack memory
แต่บางภาษาเช่น C++ เก็บอ็อบเจ็กต์ใน Stack memory ได้ด้วย
.
ส่วนข้อมูลที่อยู่ในก้อนอ็อบเจ็กต์
ก็จะจำไว้ ไม่ได้หายไปไหน
แก้ไขได้เปลี่ยนข้อมูล
จึงอาจเรียกข้อมูลว่าเป็น state (ของอ็อบเจ็กต์)
ถ้าก้อนอ็อบเจ็กต์โดยเคลียร์ทิ้งจากหน่วยความจำ
ข้อมูลภายในก็จะหายไปเช่นกัน
.
ใน JavaScript
มันจะมีท่าพิเศษ ใช้ inner function
ซึ่งมีความสามารถจำข้อมูลของแปรของฟังก์ชั่นข้างนอก
ที่มาห่อฟังก์ชั่นข้างในได้
สามารถจำตัวแปรใน stack memory ของฟังก์ชั่นข้างนอกที่มาห่อ
จำได้ว่ามันเก็บอะไร
สามารถแก้ไข เปลี่ยนข้อมูลได้เช่นกัน
เลยสามารถมาเขียนเลียนแบบเขียนโปรแกรมเชิงวัตถุได้เล่นๆ
.
.
++++ขอประชาสัมพันธ์++++++
ใครสนใจศึกษาจาวาสคริปต์ (JavaScript)
คนละภาษากับ Java
เผื่ออนาคตจะเอาไปต่อยอด
พัฒนาเว็บไซต์
ก็อุดหนุนหนังสือเล่มนี้ได้ ที่ซีเอ็ด
https://www.se-ed.com/product-search/จตุรพัชร์-พัฒนทรงศิวิไล.aspx?keyword=จตุรพัชร์+พัฒนทรงศิวิไล
.
✍เขียนโดย โปรแกรมเมอร์ไทย thai programmer
.
.
stack heap memory 在 軟體開發學習資訊分享 Facebook 的精選貼文
文章標題 - 5個 C/C++ 開發者在編寫 Go 程式碼所會犯的錯誤
如果你已經熟悉 C/C++ 程式開發也開始想要學習近年來頗熱門的 Go 程式設計語言,可以參考這篇文章列出幾個要注意的問題
1. Heap vs. Stack
2. Memory & Go routine leaks
3. Error handling
>Go 程式設計相關課程可參考 http://bit.ly/2MdmolH
https://about.sourcegraph.com/…/gophercon-2018-5-mistakes-…/