重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
JVM是java程序运行的底层平台,与Java支持库一起构成了Java程序的执行环境
创新互联建站专注于长兴企业网站建设,响应式网站设计,成都做商城网站。长兴网站建设公司,为长兴等地区提供建站服务。全流程专业公司,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务JVM虚拟机就是指能执行标准Java字节码的虚拟计算机
JDK与JVM的区别JDK中包含JRE,JRE中包含JVM
JDK=JRE+开发调试诊断工具,JRE=JVM+Java标准库
JVM厂商Oracle,IBM,阿里巴巴,亚马逊,Red Hat,Adopt OpenJDK
OracleJDK与OpenJDK有什么区别?各种版本的JDK一般来说都会符合Java虚拟机规范。
两者的区别一般来说包括:
两种JDK提供的工具套件略有差别,比如jmc等有版权的工具。
某些协议或配置不一样,比如美国限制出口的加密算法。
其他细微差别,比如JRE中某些私有的API不一样。
Java最受欢迎的长期维护版本是Java8和Java11Java8是经典LTS版本,性能优秀,系统稳定,良好支持各种CPU架构和操作系
统平台。
Java11是新的长期支持版,性能更强,支持更多新特性,而且经过几年的维护已经很稳定。
一般来说。 测试环境、预上线环境的JDK配置需要和生产环境一致。
Java字节码Java源代码编译后的中间代码格式
字节码文件中包含哪些内容版本号信息静态常量池(符号常量)
类相关的信息
字段相关的信息
方法相关的信息
调试相关的信息
什么是常量常量是指不变的量,字母 ‘K’ 或者数字 1024 在UTF8编码中对应到对应的二进制格式都是不变的。同样地,字符串在Java中的二进制表示也是不变的, 比如 “KK” 。在Java中需要注意的是, final 关键字修饰的字段和变量,表示最终变量,只能赋值1次,不允许再次修改,由编译器和执行引擎共同保证
怎么理解常量池在Java中,常量池包括两层含义:
静态常量池,class文件中的一个部分,里面保存的是类相关的各种符号常量。
运行时常量池, 其内容主要由静态常量池解析得到,但也可以由程序添加。
JVM运行时数据区有哪些程序计数器 ,Java虚拟机栈,堆内存,方法区,运行时常量池,本地方法栈
什么是堆内存堆内存是指由程序代码自由分配的内存,与栈内存做区分
在Java中,堆内存主要用于分配对象的存储空间,只要拿到对象引用,所有的线程都可以访问堆内存
堆内存包括哪些部分新生代,老年代,存活区,新生代和存活区一般称为年轻代
什么是非堆内存除堆内存外,JVM的内存池还存储非堆(NON_HEAP),对应于JVM规范中的方法区
什么是内存溢出内存溢出是指可用内存不足
程序运行需要使用的内存超过大可用值,如果不进行处理就会影响其他进程,所以现在的操作系统的处理办法是:只要超出立即报错
就像杯子里的水,满了就要溢出来
什么是内存泄露内存泄漏是指本来无用的对象却继续占用内存,没有在恰当的时机释放占用的内存
不使用的内存,却没有释放,称为内存泄漏,也就是该释放的没释放,该回收的没回收
例子:每一个请求进来,或者每进行一次操作处理,都分配了内存,却有一部分不能回收(或未释放),那么随着处理的请求越来越多,内存泄漏也就越来越严重在Java中一般是指无用的对象却因为错误的引用关系,不能被GC回收
内存泄漏与内存溢出的关系如果存在严重的内存泄漏问题,随着时间的推移,必然会造成内存溢出
内存泄漏一般是资源管理问题和程序BUG,内存溢出则是内存空间不足和内存泄漏的最终结果
给定一个具体的类,计算对象的内存占用对象头占用12字节。
每个long类型的字段占用8字节,3个long字段占用24字节。
byte 字段占用1个字节。
以上合计 37字节,加上以8字节对齐,则实际占用45个字节。
对象头中包含哪些部分标记字,占用一个机器字(1位),也就是8字节
类型指针,占用一个机器字
在堆内存小于32GB,JVM会默认开启指针压缩,则只占用4个字节
如果是数组,对象头中还会多出一部分,数组长度,int值,占用4个字节
常用的JVM启动参数有哪些# JVM启动参数不换行
# 设置堆内存
‐Xmx4g ‐Xms4g
# 指定GC算法
‐XX:+UseG1GC ‐XX:MaxGCPauseMillis=50
# 指定GC并行线程数
‐XX:ParallelGCThreads=4
# 打印GC日志
‐XX:+PrintGCDetails ‐XX:+PrintGCDateStamps
# 指定GC日志文件
‐Xloggc:gc.log
# 指定Meta区的大值
‐XX:MaxMetaspaceSize=2g
# 设置单个线程栈的大小
‐Xss1m
# 指定堆内存溢出时自动进行Dump
‐XX:+HeapDumpOnOutOfMemoryError
‐XX:HeapDumpPath=/usr/local/
还有一些常用的属性配置:
# 指定默认的连接超时时间
‐Dsun.net.client.defaultConnectTimeout=2000
‐Dsun.net.client.defaultReadTimeout=2000
# 指定时区
‐Duser.timezone=GMT+08
# 设置默认的文件编码为UTF‐8
‐Dfile.encoding=UTF‐8
# 指定随机数熵源(Entropy Source)
‐Djava.security.egd=file:/dev/./urandom
设置堆内存Xmx应该考虑哪些因素?需要根据系统得配置来确定,要给操作系统和JVM本身留下一定得剩余空间,推荐配置系统或容器里可用内存得70~80%最好
假设物理内存是8G,设置多大堆内存比较合适比如说系统有8G物理内存,系统自己可能会用掉一点,大概还有7.5G可用,那么建议配置-Xml6g
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧