JVM内存模型

网友投稿 655 2022-11-14

JVM内存模型

JVM内存模型

我们在学习JVM的内存管理的时候,我们的思维要跳出Java的局限。我们要这么理解。我们写的Java代码,是运行在JVM上的。 如果让你来实现JVM那么。你会怎么处理呢?

什么是公共部分,什么是私有部分?

公共部分(堆heap)

Class字节码是公共的,是共享的,所有线程都要认识字节码。new的对象是公共的,也是共享的,所有线程要都能认识这些实例对象,能读取到实例的数据

私有部分 (栈stock)

Java中每个线程的执行中的代码,及代码中的局部变量等信息是私有的。每个线程之间都要维护一份。JVM虚拟栈和本地方法栈。代码是怎么执行的,当然是一行一行执行。那么这一行一行的代码是放在哪里的呢? 是放在栈里面的。Java代码是在JVM来执行的。 所以这个栈,我们称为JVM虚拟栈。JVM中有些方法是调用其他语言实现的, 会使用本地方法栈。那么谁来读取栈里面的数据,来出栈执行呢? 这叫做PC寄存区。

这些区域的内存是如何划分的呢?传说中的GC的内存回收策略?

jad命令

打开arthas 找到类 ​​[arthas@87476]$ sc sun.reflect.GeneratedMethodAccessor*​​ 扫描动态生成的类。

反编译看下反射类中的代码

元空间使用 https://xiaogenban1993.github.io/20.04/%E7%BB%BC%E8%BF%B0_%E5%86%85%E5%AD%98.html

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包
下一篇:六大原则 & 23种设计模式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~