请选择 进入手机版 | 继续访问电脑版

运行时数据区

[复制链接]
小小海 发表于 2021-1-1 17:44:33 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
文章目次



运行时数据区



线程中的栈结构和JVM的堆结构


虚拟机栈
Java的指令是基于栈的架构,栈是运行时单位,而堆是存储单位
作用:​ 主管JAVA步伐的运行,它保存方法的局部变量,部门效果,并到场方法的调用和返回。
  JVM对栈的操纵只有出栈和压栈。且允许Java栈的巨细是动态的或是固定稳定的。设置栈巨细下令:-Xss
栈大概的异常

  • StackOverFlowError:
    当固定栈的容量时,线程请求分配的栈容量凌驾Java虚拟机栈允许的最大容量。
  • OutofMemoryError:
    ​ 虚拟机的栈容量是可变时,实验扩展内存但无法申请额外内存。
栈内部的存储单位
每个线程都有自己的栈,栈中的数据都是以栈帧的形式存在。在线程上执行的每个方法都对应着一个栈帧
栈运行原理
​ 1. 差异线程中所包含的栈帧是不允许存在相互引用的,即不能在一个栈帧中引用另一个线程的栈帧。
​ 2. Java方法有两种返回方式:一种是正常的return 返回,一种是抛出异常。这两种都会导致方法栈帧被弹出
JVM 系统线程

虚拟机线程:这种线程的操纵需要JVM到达安全点才出现,这些操纵必须在差异线程中发生的原因是他们都需要JVM到达安全点,这样堆才不会变革。这种线程的执行范例包罗“stop-the-world”的垃圾收集、线程栈收集、线程挂起以及方向锁撤销。
周期任务线程:这种线程是周期事件的体现(好比中断),他们一般用于周期性操纵的调理执行。
GC线程:这种线程对在JVM里差异种类的垃圾收集行为提供支持。
编译线程:在运行时会将字节码编译成当地代码。
信号调理线程:这种线程接收信号并发给JVM,在它内部通过调用适当方法举行处理惩罚。
JVM中的Runtime类(运行时情况)

每个JVM只有一个Runtime实例,即为运行时情况。线程是一个步伐里的运行单位,JVM允许一个应用有多个线程并行的执行。
RunTime类常用的方法:


  • getRuntime():该方法用于返回当前应用步伐的运行情况对象。
  • exec(String command):该方法用于根据指定的路径执行对应的可执行文件。
  • freeMemory():该方法用于返回Java虚拟机中的空闲内存量,以字节为单位。
  • maxMemory():该方法用于返回Java虚拟机试图使用的最大内存量。
  • totalMemory():该方法用于返回Java虚拟机中的内存总量。
  • availableProcessors()方法 返回Java虚拟机可用的处理惩罚器数

来源:https://blog.csdn.net/xyz9353/article/details/111998778
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )