打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java核心知识点-JVM结构和工作方式

来自:Shawn_wang - 博客

(点击尾部阅读原文前往)

一、JVM体系结构

1.1 JVM中主要包括(PC寄存器,栈,)(堆,方法区,)本地方法区

一个Java线程中,包括PC寄存器(保存当前执行的指令位置),和栈帧(一个方法对应一个栈帧),本地变量(保存计算中的临时数据),当一个线程结束后,线程内所有数据就自动销毁,不需要垃圾回收。

将1压入栈中,将2压入栈中,将1,2弹出计算1+2,将3压入栈顶,OVER。

方法区是堆的一部分,就是java的永久区PermGen。

  • 本地方法区

本地方法区是为了JVM运行native方法(c/c++等语言写的方法)准备的区。

1.2 内存分配方式:

  • 静态内存分配:

在编译时确定需要的内存空间,当程序加载时系统把内存一次性分配给它。静态内存分配是在java栈上分配的,当方法结束时对应的栈帧也就撤销,所以分配的内存空间就被回收。

public void staticData(int arg){//int类型占4个字节

String s="haha";//引用类型占4个字节,(常量池中)

long l=1.00;//long占8个字节

Long lg=1L;//原生类型,这里是引用引用占4个字节(常量池中)

Object o=new Object;//(堆中)

}

上面一段代码会占用内存空间4+4+8+4+4=24。

  • 动态内存分配:

程序执行的时候才知道要分配的内存大小,当对象创建的时候,在堆上给对象分配一块空间,空间回收时间不定,由JVM垃圾回收器管理。

1.3 垃圾回收算法

  • 新创建的对象会分配到Young的Eden上,如果Eden满了就触发MinorGC,将Eden区中存活的对象保存到Survivor的一个区中,同时将Survivor另一个区存活的对象也保存到Survivor这个区中,Survivor区始终有一个区是空的。

  • survivor的一个区满了之后,会将对象直接放到Old区,Old区满了会触发FullGC,将回收整个堆空间。

  • perm区主要保存class对象,垃圾回收也是FullGC触发

●本文编号1564,以后想阅读这篇文章直接输入1564即可。

●本文分类“Java”搜索分类名可以获得相关文章。

●输入m可以获取到文章目录

Java编程↓

C/C++编程↓

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android 之 内存管理
JVM结构、GC工作机制详解
JVM从零学习(六)堆
Jvm内存回收终极奥义:垃圾收集算法算法终极奥义相当于40米大刀
JVM内存模型及内存分配过程
Java内存与垃圾回收调优
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服