เพื่อน ๆ ที่เขียนโปรแกรมด้วย 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 - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
同時也有1部Youtube影片,追蹤數超過7萬的網紅在地上滾的工程師 Nic,也在其Youtube影片中提到,硬核的知識也許不是每個工程師都能夠在職涯發展中完全運用到,但無論是本科系、轉職、自學成為工程師的朋友,都應該要知道,這些紮實的背景知識提早學習起來,在未來的日子裡,只有好沒有壞。 就透過本影片我的真實經驗分享,告訴你這些我在大學時期看似枯燥乏味的理論,其實就是程式設計內功,而日後沉睡已久的內功卻又...
「java heap」的推薦目錄:
- 關於java heap 在 BorntoDev Facebook 的精選貼文
- 關於java heap 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
- 關於java heap 在 軟體開發學習資訊分享 Facebook 的最佳貼文
- 關於java heap 在 在地上滾的工程師 Nic Youtube 的最讚貼文
- 關於java heap 在 java.lang.OutOfMemoryError Java heap space? 怎麼解? 的評價
- 關於java heap 在 Java heap memory issue and CPU goes high [duplicate] 的評價
- 關於java heap 在 Stack and Heap: Memory Management In Java (The most ... 的評價
- 關於java heap 在 Different types of heap in java - Software Engineering Stack ... 的評價
java heap 在 โปรแกรมเมอร์ไทย 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
.
.
java heap 在 軟體開發學習資訊分享 Facebook 的最佳貼文
記憶體洩漏( Memory leaks ) 和迷途指標( dangling pointers )是手動記憶體管理的主要問題。 你在連結串列中刪除了父節點,卻忘了先刪除它的所有子節點ーー你的記憶體正在洩漏。 你以正確的順序刪除一個物件鏈ー但是突然你的程式崩潰了,因此你忘記了這個資源的第二個所有者,這個資源現在試圖取消參考( dereference ) 一個空指標( null-pointer )。
為了避免這些問題,大多數現代高階程式語言實現了自動記憶體管理。 你可以手動分配物件的記憶體,但是不必擔心它們的釋放: 一個特殊的程式,垃圾收集器,知道如何正確地自動釋放物件,並回收它們以供將來重複使用。
在“垃圾收集器必備基礎”課程中,我們學習了與自動記憶體管理相關的所有不同的技術和演算法,這些技術和演算法現在已經在實踐中得到了應用。
✅這門課是給誰上的?
首先,針對編譯器工程師。
在實現程式語言時,很有可能需要實現一個垃圾收集器。 即使最初定位為“記憶體安全”的語言,如 Rust,最終也實現了自動參考計數(ARC)和其它收集器。
重申一下: 在大多數現代高階程式語言中,垃圾收集器模組(或多個 GC 模組,比如 Java)現在基本上是必需的。
如果實現程式語言不是我每天的工作?
如果你不是一個編譯器工程師,那麼這個課程對你來說仍然是有趣的。 總的來說,實現垃圾收集器或記憶體管理器是一項相當高階的工程任務。 這是一個簡單的技巧: 你參與一些複雜的專案(如垃圾收集器、編譯器、直譯器等) ,在構建它時,你將學習所有不同的資料結構和演算法。 然後回到“每日程式設計” ,得到能力上的提升以成為一個更好的工程師,掌握了複雜系統的可轉移通用知識。
✅這個專案我需要熟悉 C 還是 C++ ?
也不盡然! 當然,C 和 C++ 可能是最適合原始記憶體操作的語言,並且在這裡非常適合,但是在課程中我們學習通用設計演算法,主要關注垃圾收集器和記憶體分配器的理論方面。 這意味著你可以用任何你想要的語言來實現它們。 例如,你可以在 JavaScript 中為一個虛擬 Heap 分配一個 ArrayBuffer,或者類似的在 Python、 Rust 等中分配一個 bytearray。
本課程中的大多數演算法都是用泛型虛擬碼( generic pseudo-code )描述的,因此你可以將它們移植到任何語言中。
https://softnshare.com/essentials-of-garbage-collectors/
java heap 在 在地上滾的工程師 Nic Youtube 的最讚貼文
硬核的知識也許不是每個工程師都能夠在職涯發展中完全運用到,但無論是本科系、轉職、自學成為工程師的朋友,都應該要知道,這些紮實的背景知識提早學習起來,在未來的日子裡,只有好沒有壞。
就透過本影片我的真實經驗分享,告訴你這些我在大學時期看似枯燥乏味的理論,其實就是程式設計內功,而日後沉睡已久的內功卻又恰巧的在職涯旅途中碰上用處。
章節:
00:00 學這些有用嗎
00:52 我與速成班的距離
04:45 業務增長後的影響
06:36 基本功知識科普
喜歡影片的話!可以幫忙點個喜歡以及分享、訂閱唷!😘
━━━━━━━━━━━━━━━━
⭐ 蝦皮賣場: https://shopee.tw/bboyceo
⭐ instagram (生活日常): https://www.instagram.com/niclin_tw/
⭐ Facebook (資訊分享): https://www.facebook.com/niclin.dev
⭐ Blog (技術筆記): https://blog.niclin.tw
⭐ Linkedin (個人履歷): https://www.linkedin.com/in/nic-lin
⭐ Github: https://github.com/niclin
⭐ Podcast: https://anchor.fm/niclin
━━━━━━━━━━━━━━━━
🌟 任何問題或合作邀約信箱: niclin0226@gmail.com
#資料結構 #演算法 #計算機概論 #前端 #後端 #工程師

java heap 在 Stack and Heap: Memory Management In Java (The most ... 的推薦與評價

From Java Code to Java Heap: Understanding the Memory Usage of Your Application:Understanding JVM ... ... <看更多>
java heap 在 java.lang.OutOfMemoryError Java heap space? 怎麼解? 的推薦與評價
前言因為工作關係,其實不只會碰到node.js有時候還會協助其他專案,而有的專案就是用java 寫的很久之前在伺服器噴出一個OutOfMemoryError: Java heap ... ... <看更多>