(五)java深入java虚拟机及大数据笔记库(49)

    一.  jvm的相关概念


1 ) . 场景 :             heap(堆)--stack(栈)

1.1 当List放了大量的数据超过jvm中所能容纳的内存后,就会发生堆溢出

1.2 当递归调用没有临界退出条件就会出现栈溢出

1.3 当批量导入大量数据或用dom4j解析大的xml文件时,便会出现堆溢出,可用分段批量提交以及用sax替代dom4j来解决

2 ) . 简述 :   jvm的结构细分及其概述

2.1 堆 :  java虚拟机有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配, 堆是在Java虚拟机启动时创建的

2.2 非堆 : 在JVM中堆之外的内存成为非堆内存(Non-heap memory),可看出JVM主要管理两种类型的内存 : 堆和非堆

2.3 小结 : 简单讲堆是java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的



3 ) .  简述 : jvm内存结构  

3.1 堆  

[1] 逻辑上是连续的,物理上可以处于不连续的内存空间中

[2]内存储的是对象实例以及数组

[3]可细分为新生代,老生代,通过-Xmx和Xms控制大小

3.2 虚拟机栈 :  

[1]基本数据类型,对象引用(地址,指针)

3.3 本地方法栈 : 

[1]作用与虚拟机栈差不多,区别在于虚拟机栈为java方法的执行提供服务,而本地方法栈为虚拟机使用到 的Native(本地)方法提供服务

3.4 方法区 : 

[1 ]内存放加载的类的信息(名 称,修饰符等),类中的静态变量,类中定义为final类型的常量,类中的Field信息,类中的方法信息

[2]在Su nJDK中区域对应的是PermanetGern eration,又成为持久代,默认为64M,可通过-XX:PermSize以及-XX:MaxPermSize指定其大小

[3] 若服务器启动时报内 存溢出则因为方法区太小,也就是持久代中内存太小, 可通过-XX : PerSize以及-XX:MaxPerSize来指定其大小,解决该问题

3.5 常量池 :

[1] 其是方法区的一部分,用 来存储常量信息,如 : String就存储在常量池中

3.6 计数器

[1]通过该计数器的 值来选取下一条要执行的字节 码指令


4 ) . GC是什么,为什么要有GC?

4.1简述 : 

[1]GC就是垃圾回收,

[2] java这种语言是动态分配内存大小的,而且依靠垃圾回收机制来完成对分配内存空间的回收,从而避免内存溢出问题,也在一定程度上降低了程序员工作的复杂度

4.2 generaton-->分代回收算法

[1] 阐述 :  jvm中的GC采用了generation(分代回收)算法

[2] 来源 : 因大多数的对象存活时间较短,少部分对象才能够存活时间长,因此,jvm将堆和栈分为年轻代(young generation)和老年代(old generation)

[3] 解说 : 年轻代---年老代

年轻代中对象通常建立时间不久,且大部分生命周期也很短

年老代中的对象则已经创建比较久了,其声明周期也相对年轻代长

[4] 区别对待 : ---> 依据以上划分,jvm在做GC时进行了区别对待

对年轻代GC会相对比较频繁,且采用了copying(复制)算法;

对年老代GC相对比较少,且采用的是tracing算法的一种,是标记-清除-压缩

5 ) .JVM内存限制(最大值)

5.1 简述 : 

[1]JVM内存的 最大值跟操作系 统有很大关系

[2] 简单将32位处理器虽然可控内存空间为4GB,但具体的操作系统会给一个限制,一般是2GB-3GB-->(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G)

[3]而64bit以上的处理器就不会有限制le

6 ) .Java监视和管理控制台

6.1 简述 : JConsole使您能够在运行时监视各种JVM资源统计信息

6.2 适用 :该特性适用于检测死锁,内存泄露

6.3 功能 :可链接到一个本地或远程JVM并可用来监视

[1]线程状态-->包括相关的锁

[2]内存使用情况

[3]垃圾收集

[4]运行时信息

[5]JVM信息

7 ) .jvm的调优?

7.1 开启-Server模式,增加堆的大小,以及持久代的大小,从而提高程序的运行效率

7.2 将 初始化堆大小和最大堆大小 设置为一样的值从而避免堆增长会带来的额外压力

7.3 持久代大小的设置同理,也设置为初始大小和最大堆大小一样大

8 ) .jvm的类加载机制?jvm中类的生命周期?

8.1 生命周期 :  

Loading(加载)-->Linking(连接)-->Initalization(初始化)-->Using(使用)-->Unloading(卸载)

解说 : 

[1] 对象基本上都是在jvm的堆区中创建,在创建对象之前,会触发类加载(加载,连接,初始化)

[2] 当类初始化完成后,根据类信息在堆中实例化类对象,初始化非静态变量,非静态代码,以及默认构造方法

[3] 当对象使用完之后会在合适的时候被jvm垃圾收集器回收

8.2 经过 :  类加载机制经过三步 :  加载(Load) ,链接(Link),初始化(Iniaializ)

[1] 链接 : 内又可分为 校验(Verify),准备(Prepare),解析(Resolve)三步

[2] 加载 :  ClassLoader就是用来装载的,通过指定className,找到二进制码,生成Class实例,放到JVM中

    [2.1]ClassLoader从顶向下分为 : 

Bootstrap ClassLoader : 引导类加载器,负责加载java的核心类(如 : rt.jar)

Extension ClassLoader : 扩展类加载器,负责加载JRE的扩展目录(如 : JAVA_HOME/jre/lib/ext 中的jar包)

System ClassLoader  : 系统(也称为应用) 类加载器,负责在JVM被启动时加载来自  在命令java中的 -classpath中的jar包

User-Defined ClassLoader : 用户自定义的类加载器


 

9 ) .linux中的命令

9.1 ps -ef | grep : 查看进程信息

9.2 vi : 文件编辑命令

9.3 more : 分页查看命令

9.4 top : 常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况

9.5 ifconfig : 显示或配置网络设备的命令

9.6 ping : 通常用来测试与目标主机的连通性

9.7 rsync,scp :  文件同步命令

 

 

  
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值