移动互联网开发的几种方式,seo顾问是干什么,python培训学校,怎么看一个网站用什么平台做的类装载分为以下 5 个步骤#xff1a; 加载#xff1a;根据查找路径找到相应的 class 文件然后导入#xff1b; 检查#xff1a;检查加载的 class 文件的正确性#xff1b; 准备#xff1a;给类中的静态变量分配内存空间#xff1b; 解析#xff1a;虚拟机将常量池中的符…类装载分为以下 5 个步骤 加载根据查找路径找到相应的 class 文件然后导入 检查检查加载的 class 文件的正确性 准备给类中的静态变量分配内存空间 解析虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用就理解为一个标示而在直接引用直接指向内存中的地址
不同虚拟机的运行时数据区可能略微有所不同但都会遵从 Java 虚拟机规范 Java 虚拟机规范规定的区域分为以下 5 个部分
程序计数器Program Counter Register当前线程所执行的字节码的行号指示器字节码解析器的工作是通过改变这个计数器的值来选取下一条需要执行的字节码指令分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成
Java 虚拟机栈Java Virtual Machine Stacks用于存储局部变量表、操作数栈、动态链接、方法出口等信息
本地方法栈Native Method Stack与虚拟机栈的作用是一样的只不过虚拟机栈是服务 Java 方法的而本地方法栈是为虚拟机调用 Native 方法服务的
Java 堆Java HeapJava 虚拟机中内存最大的一块是被所有线程共享的几乎所有的对象实例都在这里分配内存
方法区Methed Area用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。
初始化对静态变量和静态代码块执行初始化工作。 新生代回收器Serial、ParNew、Parallel Scavenge 老年代回收器Serial Old、Parallel Old、CMS 整堆回收器G1 CMS 是英文 Concurrent Mark-Sweep 的简称是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上这种垃圾回收器非常适合。在启动 JVM 的参数加上“-XX:UseConcMarkSweepGC”来指定使用 CMS 垃圾回收器。
CMS 使用的是标记-清除的算法实现的所以在 gc 的时候回产生大量的内存碎片当剩余内存不能满足程序运行要求时系统将会出现 Concurrent Mode Failure临时 CMS 会采用 Serial Old 回收器进行垃圾清除此时的性能将会被降低。 java -XX:PrintFlagsFinal 打印所有gc 参数
-Xms2g初始化推大小为 2g -Xmx2g堆最大内存为 2g -XX:NewRatio4设置年轻的和老年代的内存比例为 1:4 -XX:SurvivorRatio8设置新生代 Eden 和 Survivor 比例为 8:2 –XX:UseParNewGC指定使用 ParNew Serial Old 垃圾回收器组合 -XX:UseParallelOldGC指定使用 ParNew ParNew Old 垃圾回收器组合 -XX:UseConcMarkSweepGC指定使用 CMS Serial Old 垃圾回收器组合 -XX:PrintGC开启打印 gc 信息 -XX:PrintGCDetails打印 gc 详细信息。
t调优工具 jstackjmap jconsole arthas
jjmap -histo 9952 ./log.txt
jjmap -histo:live 9952 log.txt
jjmap -heap
jjstack -l 9952