zoukankan      html  css  js  c++  java
  • Java内存结构学习总结

    自己学习后的笔记贴上来的,有不正确或者不完成的还望指正。

     

    程序计数器:作用可以看成当前线程所执行的字节码的行号指示器。为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间的计数器互不影响,独立存储。---线程私有

    虚拟机栈描述JAVA方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口灯信息。每个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。局部变量表存放了编译期可知的各种基本数据类型和对象引用类型,所需内存空间在编译期间完成分配。---线程私有

    虚拟机栈中的两种异常状况:如果线程请求的栈深度大于虚拟机允许的深度,抛出StackOverflowError;如果虚拟机栈可以动态扩展,当扩展无法申请到足够的内存时抛出OutOfMemoryError。

    本地方法栈:为虚拟机使用到的Native方法服务。---线程私有

    JAVA是被所有线程共享的一块内存区域,在虚拟机启动时创建。所有的对象实例以及数组都要在堆中分配,垃圾收集器管理的主要区域。

    方法区存储被虚拟机加载的类信息(类名、访问修饰符、字段描述、方法描述等)、常量、静态变量、即时编译器编译后的代码等数据。垃圾收集器主要是针对该区域的常量的回收和对类型的卸载。

    运行时常量池(属于方法区部分):存放编译期生成的各种字面量和符号引用。动态性:运行期间也可能将新的常量放入池中,如String类的intern()方法。

    直接内存:堆外内存,新IO类中引入的机遇通道Channel与缓冲的I/O方式,使用Native函数库直接分配对外内存。

    配置参数

    1. -Xnoclassgc  关闭类垃圾回收功能
    2. -Xincgc      开启类的垃圾回收功能
    3. –Xms<size>  设置JVM初始化堆内存大小
    4. –Xmx<size>  设置JVM最大的堆内存大小
    5. –Xss<size>   设置JVM栈内存大小
  • 相关阅读:
    解决无线打印机休眠后掉线无法进行局域网打印的问题
    快速为某个目录的verilog文件生成filelist
    使用Visual Studio的Spy++查找弹窗广告进程
    【转载】verilog语法之generate语句的基本认识
    补码(为什么按位取反再加一):告诉你一个其实很简单的问题
    【转载】EDID的简介和解析
    win32diskimager 谨慎使用
    UXE的一些使用归纳
    如何在win8或win10系统里添加inf驱动程序
    STM32 USB HID
  • 原文地址:https://www.cnblogs.com/yshb/p/2535290.html
Copyright © 2011-2022 走看看