程序计数器:

存放下一条要运行的指令;每个线程都必须用一个独立的程序计数器,用于记录下一条要运行的指令。程序计数器是一块线程私有的内存空间。

JAVA虚拟机栈:

线程私有的内存空间,它保存方法的局部变量,部分返回结果,并参与方法的调用和返回。虚拟机栈在运行的时候使用一种叫做栈帧的数据结构保存上下文数据。在栈帧中,存放了方法的局部变量表、操作数栈、动态连接方法和返回地址等信息。每个方法的调用都伴随着栈帧的入栈操作,每个方法的返回都伴随着栈帧的出栈操作。

本地方法栈:管理本地方法的调用。和虚拟机一样,它也会抛出StackOverFlowErrow和OutOfMemoryError。

java堆:

几乎所有的对象和数组都是在堆中分配空间的,堆是线程共享的。堆分为新生代和老年代两部分,新生代用于存放刚刚产生的对象和年轻的对象,新生代又可以细分为eden,s0和s1区。eden表示对象的出生地,大部分刚刚出生的对象会存放在这里,s0和s1区空间,称为幸存者,其中存放的对象至少经历了一次垃圾回收,并得以幸存。如果在幸存区的对象到了指定年龄还没有被回收,则有机会进入老年代。

方法区:

被JVM所有线程共享。方法区也称为永久区,主要存放常量和类的定义信息。方法区中最为重要的是类的类型信息,常量池,域信息,方法信息。类的类型信息包括类的完整名称,父类的完整名称,类型修饰符等;常量池包括这个类方法引用的常量信息;域信息包括域名称、域类型和域修饰符;方法信息包括方法名,返回类型、方法参数、方法修饰符。

对永久代的回收,主要从两个方面分析:1是GC对永久区常量池的回收;2是永久区对类元数据的回收。

1是GC对永久区常量池的回收:常量池中的常量没有被任何地方应用,就可以被回收。

2是永久区对类元数据的回收:若系统中动态的生成大量类,可能会导致方法区溢出。JVM要确认一个类信息是否被回收,基本条件有:所有该类的实例被回收,且装载该类的ClassLoader被回收。

JVM内存模型以及堆分配参数的更多相关文章

  1. jvm内存模型及分配参数

    jvm内存模型 程序计数器:是一块很小的内存空间.当线程数量超过cpu数量时,线程之间根据时间片轮询抢夺cpu资源.每一个线程都必须用一个独立的程序计数器,用于记录下一条要运行的指令. java虚拟机 ...

  2. 记录JVM内存模型,参数含义和优化

    一.JVM内存模型 (图片来自网络) 根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) Perm (永久代) 其中New和Tenured属于堆内存,堆内存会从J ...

  3. 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置

    VM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内存模型 2.JVM垃圾 ...

  4. java中栈内存与堆内存(JVM内存模型)

    java中栈内存与堆内存(JVM内存模型) Java中堆内存和栈内存详解1 和 Java中堆内存和栈内存详解2 都粗略讲解了栈内存和堆内存的区别,以及代码中哪些变量存储在堆中.哪些存储在栈中.内存中的 ...

  5. JVM内存模型和关键参数设置

    一. JVM内存模型: Jvm内存模型是学好Java很重要的一部分,该部分学习能让我们在系统运维的时候,或者优化服务器的时候能够有方法,懂原理. 二. Jvm关键参数: 1. 堆大小设置参数: -Xm ...

  6. jvm内存模型和内存分配

    1.什么是jvm? (1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的. (2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和 ...

  7. JVM内存模型及内存分配过程

    一.JVM内存模型 JVM主要管理两种类型内存:堆(Heap)和非堆(Permanent区域). 1.Heap是运行时数据区域,所有类实例和数组的内存均从此处分配.Heap区分两大块,一块是 Youn ...

  8. jvm内存模型-回收算法-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东面试题)

    1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的.(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个 ...

  9. jvm内存模型及分配

    1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的.(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个 ...

随机推荐

  1. (转)Inno Setup入门(十)——操作注册表

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250871 有些程序需要随系统启动,或者需要建立某些文件关联等问题 ...

  2. 004:MySQL数据库体系结构

    目录 一. MySQL数据库体系结构 1.MySQL数据库体系结构介绍 1 数据库定义 2 数据库实例 2. MySQL体系结构 1 单进程多线程结构 2 存储引擎的概念 3 体系结构图 4 逻辑存储 ...

  3. 侯捷stl学习笔记链接

    http://www.cnblogs.com/ranjiewen/category/799058.html http://www.cnblogs.com/ranjiewen/p/8260275.htm ...

  4. ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql (转)

    ps -A | grep -i mysql kill 列出来的进程 service mysql start 我的问题就解决了 ------------------------------------- ...

  5. 华为交换机S5700 vty 0 4

    最佳答案   vty 0 4 代表有5条VTY线路 由0到4 这个要看设备的版本有的设备会有更多条VTY线路比如一些企业版的设备 显示用户界面 进入TELNET 设置模式 user-interface ...

  6. js控制电池

    js控制电池 判断设备是否在充电 navigator.getBattery().then(function(battery){ if(battery.charging) { alert("电 ...

  7. 基于Tesseract的身份证识别Android端应用

    以开源的Tesseract为基础,做了一个身份证识别的app. 图片资源是百度找的,而且手机对着电脑屏幕拍照,拍出很多花纹,影响比较大,所以误差不小,实测对着自己身份证拍照会好很多. 效果图: 1.拍 ...

  8. 转载:详解在visual studio中使用git版本系统(图文)

    很多人已经在使用git(或正在转移到git上),在github.com上,也看到不少国内同学的开源项目,非常不错.但相关教程似乎不多,所以趁着我自己的开源项目源码托管(https://github.c ...

  9. JS限制并且显示textarea字数

    转自:https://www.cnblogs.com/shinepolo/articles/1373113.html 1 <script type="text/javascript&q ...

  10. grideh SelectedRows Bookmark

    VCL grideh 选中多行 TBookmark.Bookmark.GotoBookmark TBookmark bm= DataSet->GetBookmark(); DataSet-> ...