JVM虚拟机
一、JAVA虚拟机内存模型:
1、程序计数器:非常小的内存,用于存放下一条运行的指令;
每一个线程都必须有一个独立的程序计数器,用于记录下一条要运行的指令,是一块线程私有的内存空间,CPU时间切片
2、虚拟机栈:与线程同时创建,也是线程私有内存空间,保存方法的局部变量,部分结果,并参与方法的调用与返回
异常:StackOverflowError, OutOfMemoryError, 通过设置虚拟机栈大小-Xss2M,栈越大,函数调用次数越多,对于一个函数来说,他的参数越多,内部变量越多,函数调用次数就越少。
使用栈帧方式进行保存的,进栈与出站,栈帧结构【局部变量表、操作数栈、动态连接方法、返回地址】
3、本地方法栈:用于存放函数调用堆栈信息
4、JAVA堆(空间):所有线程共享,用于存放JAVA程序运行时所需的对象等数据(对象、数组)
被划分为新生代和老年代两部分

Eden:对象出生地,
S0,S1 Survivor经历过GC回收后的
老年代:tenured,经过多次GC回收的
5、方法区: 所有线程共享,用于存放程序的类元数据信息,类的类型信息(类名、父类名、修饰符、直接接口),常量池,域信息,方法信息。也叫永久区,是一块独立于Java堆的内存空间。也是要回收的,只是回收与堆不同。
二、JVM内存分配参数
1、设置最大堆内存:
-Xmx最大堆指的是新生代和老年代的大小之和的最大值
2、设置最小堆内存:
-Xms JVM会试图将系统内存尽可能限制在-Xms中,当内存实际使用量触及到-Xms大小时,会触发Full GC。
如果-Xms值比较大时,系统运行初期较少GC的次数和耗时。
3、设置新生代大小
-Xmn
hot Spot:-XX:NewSize新生代初始大小和-XX:MaxNewSize
设置一个较大的新生代会减少老年代大小
4、设置持久代:不属于堆的一部分
持久代的大小直接决定了系统可以支持多少个类定义和多少常量。
-XX:PermSize设置持久代的初始大小,-XX:MaxPermSize
5、堆的比例分配
-XX:SurvivorRatio设置新生代中eden空间与S0,S1比例关系
-XX:NewRatio 设置新生代和老年代的比例
JVM虚拟机的更多相关文章
- 设置TOMCAT的JVM虚拟机内存大小
你知道如何设置TOMCAT的JVM虚拟机内存大小吗,这里和大家分享一下,JAVA程序启动时JVM都会分配一个初始内存和最大内存给这个应用程序.这个初始内存和最大内存在一定程度都会影响程序的性能. 设置 ...
- JVM虚拟机(一) 内存区域
JVM虚拟机内存组成: 如下图: 1. 程序计数器: (1)是一块较小的内存空间:可以看做当前程序执行子界面的行号指示器,字节码解析器执行的时候就是根据这个 ...
- java语言与jvm虚拟机简介
一.java语言 1.1 支持面向对象编程oop 强调支持,因为java同样可以面向过程编程. oop的三大特性是:封装.继承.多态. 封装主要针对成员变量而言,oop的思想要求成员变量均为私有,不应 ...
- 翻译:JVM虚拟机规范1.7中的运行时常量池部分(二)
本篇为JVM虚拟机规范1.7中的运行时常量池部分系列的第二篇. 4.4.4. The CONSTANT_Integer_info and CONSTANT_Float_info Structures ...
- 翻译:JVM虚拟机规范1.7中的运行时常量池部分(一)
原文链接: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4 Java Virtual Machine i ...
- 【JVM虚拟机】(9)-- JVM是如何处理异常的
[JVM虚拟机](9)-- JVM是如何处理异常的 上篇博客我们简单说过异常信息是存放在属性表集合中的Code属性表里,那么这篇博客就单独讲Code属性表中的exception_table. 在讲之前 ...
- 【JVM虚拟机】(8)--深入理解Class中--方法、属性表集合
#[JVM虚拟机](8)--深入理解Class中--方法.属性表集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机] ...
- 【JVM虚拟机】(7)---深入理解Class中-属性集合
#[JVM虚拟机](7)---深入理解Class中-属性集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机](6)- ...
- 【JVM虚拟机】(6)---深入理解Class中访问标志、类索引、父类索引、接口索引
JVM(6)访问标志,类索引 上一篇博客讲[JVM虚拟机](5)---深入理解JVM-Class中常量池 我们知道一个class文件正常可以分为7个部分: 魔数与class文件版本 常量池 访问标志 ...
- 【JVM虚拟机】(5)---深入理解JVM-Class中常量池
深入理解Class---常量池 一.概念 1.jvm生命周期 启动:当启动一个java程序时,一个jvm实例就诞生了,任何一个拥有main方法的class都可以作为jvm实例运行的起点. 运行:mai ...
随机推荐
- python之configparser模块详解--小白博客
configparse模块 一.ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.section 下面为类似 ...
- React Native之配置URL Scheme(iOS Android)
React Native之配置URL Scheme(iOS Android) 一,需求分析 1.1,需要在网站中打开/唤起app,或其他app中打开app,则需要设置URL Scheme.比如微信的是 ...
- WPF中利用控件的DataContext属性为多个TextBox绑定数据
工作上需要从给定的接口获取数据,然后显示在界面的编辑框中,以往肯定会一个一个的去赋值,但这样太麻烦而且效率很低,不利于维护,于是想到了数据绑定这一方法,数据绑定主要利用INotifyPropertyC ...
- Python——字符转换(int , bool ,str)
while True: pass while 1: pass #效果相同,后者 效果更快 s = 1 y = bool (s) #结果为True,int只要不是0,就为真 s = 'abc' y = ...
- bis和bic命令实现或和异或运算
从20世纪70年代末到80年代末,Digital Equipment的VAX计算机是一种非常流行的机型.它没有布尔运算AND和OR指令,只有bis(位设置)和bic(位清除)这两种指令.两种指令的输入 ...
- 【NLP】Conditional Language Modeling with Attention
Review: Conditional LMs Note that, in the Encoder part, we reverse the input to the ‘RNN’ and it per ...
- bzoj 1208: [HNOI2004]宠物收养所 (Treap)
链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1208 题面: 1208: [HNOI2004]宠物收养所 Time Limit: 10 ...
- 压测过程中,获取不到redis连接池,发现redis连接数高
说明:图片截得比较大,浏览器放大倍数看即可(涉及到隐私,打了码,请见谅,如果有疑问,欢迎骚扰). 最近在压测过程中,出现获取不到redis连接池的问题 xshell连接redis服务器,查看连接数,发 ...
- BZOJ 3613: [Heoi2014]南园满地堆轻絮(二分)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=3613 题解: 考虑前面的数越小答案越优秀,于是我们二分答案,判断时让前面的数达到所能达到的 ...
- java.io包下适配和装饰模式的使用
如java.io.LineNumberInputStream(deprecated),是装饰模式(decorate)的实现: 如java.io.OutputStreamWriter,是适配器模式(ad ...