首页 > 修改教程 > gg修改器暂停游戏继续_gg修改器进游戏就消失
gg修改器暂停游戏继续_gg修改器进游戏就消失
  • gg修改器最新版
  • 大小:16.29MB版本:v8.58
  • 语言:简体中文系统:Android
绿色无毒,安全可靠!部分设备误报拦截请通过!

gg修改器暂停游戏继续_gg修改器进游戏就消失

作者:佚名 来源:网友 日期:2024-12-04 01:13:56

GG修改器破解版下载地址:https://ghb2023zs.bj.bcebos.com/gg/xgq/ggxgq?GGXGQ

大家好,今天小编为大家分享关于gg修改器暂停游戏继续_gg修改器进游戏就消失的内容,赶快来一起来看看吧。

1.程序计数器

概念

程序计数器也叫作PC寄存器,是一块很小的内存区域,可以看做是当前线程执行的字节码的行号指示器。字节码的解释工作就是通过改变程序计数器里面的值来获得下一条需要执行字节码的指令。

特点

图例

2.虚拟机栈

概念

JAVA虚拟机栈的生命周期和线程相同,他也是线程私有的,每一个线程有自己独立的虚拟机栈。他用来存储栈帧,程序运行时,每一个方法被调用执行时都会创建一个栈帧,用来存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用到执行完就对应着一个栈帧在虚拟机中从入栈到出栈的过程。

图例演示

栈帧

栈帧是支持虚拟机方法调用和执行的数据结构。栈帧中存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法的调用和执行完成都对应着一个栈帧从虚拟机栈中入栈到出栈的过程。

设置虚拟机栈的大小

-Xss为JVM启动时的每个线程分配的内存大小,也就是可以设置线程栈的大小。

-Xss1m # 单位为MB
-Xss1024k #单位为KB
-Xss1048576 #字节大小

局部变量表

局部变量表是一组变量值存储空间,用于存放方法的参数和方法内定义的局部变量。

操作数栈

操作数栈是一个后入先出栈(LIFO)。随着方法执行和字节码指令的执行,会从局部变量表或者对象实例的字段中复制常量或者变量写到操作数栈,再随着计算的进行会将栈中的元素出栈到局部变量表或者返回给方法调用者。

动态链接

java虚拟机中,每一个栈帧都包含一个指向运行时常量池中该栈所属方法的符号引用,持有这个引用的目的为了支持方法调用过程中的动态链接。 动态链接的作用:将符号引用转换为直接引用。

方法返回地址

方法返回地址存放调用该方法的PC寄存器的值。一个方法的结束,有两种方式:正常地执行完成,出现未处理的异
常非正常的退出。无论通过哪种方式退出,在方法退出后都返回到该方法被调用的位置。方法正常退出时,调用者
的PC计数器的值作为返回地址,即调用该方法的指令的下一条指令的地址。而通过异常退出的,返回地址是要通过
异常表来确定,栈帧中一般不会保存这部分信息。
无论方法是否正常完成,都需要返回到方法被调用的位置,程序才能继续进行。

3.本地方法栈

概念

本地方法栈则是为虚拟机使用到的本地(Native) 方法服务,而虚拟机栈是为使用到的java方法服务。

关于native方法

native关键字修饰的Java方法是一个原生态方法,方法对应的实现Java作用范围达不到,而是在用其他编程语言(如C和C++)文件中实现。Java语言本身不能直接对操作系统底层进行访问和操作,但可以通过JNI接口调用其他编程语言来实现对操作系统底层的访问。 native方法在异地实现,类似抽象方法,不能有方法体,要以分号结束。例如:

本地方法栈特点

4.堆

4.1 堆的总括

4.1.1 概念

Java堆(Java Heap) 是虚拟机所管理的内存中最大的一块。 Java堆是被所 有线程共享的一块内存区域, 在虚拟机启动时创建。 此内存区域的唯一目的就是存放对象实例, Java 世界里“几乎”所有的对象实例都在这里分配内存。

4.1.2 特点

4.1.3 设置堆内存大小

我们可以通过-Xms来设置最小堆内存,通过-Xmx设置最大堆内存。

以上是设置了:-Xms5m -Xmx20m

这里可以看出打印出来的Xmx值18m和设置的值20m之间是有差异的,total Memory和最大的内存之间也还是存在比较明显的差异,就是说JVM一般会尽量保持内存在一个尽可能底的层面,而非贪婪做法按照最大的内存来进行分配。

另外,当我们申请分配内存10m时,我们会发现free Memory和total Memory都上升了,可以看出JVM在内存分配时是动态分配的。

4.1.4堆的分类

JAVA将虚拟机堆分为三个部分:

图例如下:

4.2 新生代和老年代

4.2.1 对象存储

4.2.2 配置新生代和老年代的堆中占比

默认情况下-XX:NewRatio=2,表示新生代:老年代 = 1:2,新生代占整个堆空间的1/3

案例:假设我们将-XX:NewRatio修改为等于4,那么则表示新生代:老年代 = 1:4,那么新生代占整个堆空间的1/5

除了我们可以配置新生代和老年代的比例之外,我们还可以配置eden和S0和S1在新生代中的占比情况,默认情况下-XX:SurvivorRatio = 8,表示Eden:S0:S1=8:1:1,这表示Eden占整个新生代的8/10,而两个survivor区域分别占了1/10,另外,需要补充一点,由于JVM在运行时,每次都只会使用Eden区和一块survivor区进行服务,因此总是会有一个survivor区域是空闲着的,所以新生代的最高使用也只能达到9/10。

4.3 对象分配过程

4.4 堆GC

Java中的堆是虚拟机中GC收集垃圾的主要区域。GC分为两种,一种是部分收集(Partial GC),一种是整堆收集(Full GC).

部分收集

整堆收集(Full GC):收集整个java堆和方法区的垃圾收集器

年轻代GC触发条件

老年代GC触发条件

Full GC触发条件

5.元空间

JDK1.8后为什么废除永久代,引入元空间

废除永久代的好处

元空间相关参数

6.方法区

6.1方法区的理解

概念:

元空间、永久代是方法区具体的落地实现。方法区看作是一块独立于Java堆的内存空间,它主要是用来存储所加载
的类信息的,方法区是线程共享的。

特点:

6.2 方法区结构

类加载器将Class文件加载到内存以后,将类的信息存储到方法区中。

方法区中存储的内容:

类型信息

域信息

域信息,即为类的属性,成员变量
JVM必须在方法区中保存类所有的成员变量相关信息及声明顺序。
域的相关信息包括:域名称、域类型、域修饰符(pυblic、private、protected、static、final、volatile、transient的
某个子集)

方法信息

  1. 方法名称方法的返回类型(或void)
  2. 方法参数的数量和类型(按顺序)
  3. 方法的修饰符public、private、protected、static、final、synchronized、native,、abstract的一个子集
  4. 方法的字节码bytecodes、操作数栈、局部变量表及大小( abstract和native方法除外)
  5. 异常表( abstract和 native方法除外)。每个异常处理的开始位置、结束位置、代码处理在程序计数器中的偏
    移地址、被捕获的异常类的常量池索引

6.3 方法区设置

方法区的大小不必是固定的,可以根据应用的需要动态调整

7.运行时常量池

字节码文件中,内部包含了常量池

方法区中,内部包含了运行时常量池

常量池:存放了编译期间产生的各种字面量和符号引用。

运行时常量池:是常量池表在运行时的一种表现形式。

编译后的字节码文件中包含了类型信息、域信息、方法信息等。通过ClassLoader将字节码文件的常量池中的信息加载到内存中,存储在了方法区的运行时常量池中。

常量池,可以看做是一张表,虚拟机指令根据这张常量表找到要执行的类名、方法名、参数类型、字面量等类型。

以上就是关于gg修改器暂停游戏继续_gg修改器进游戏就消失的全部内容,希望对大家有帮助。

相关文章

热门下载

大家还在搜