JVM知识点补充

tech2023-12-03  33

一. 零碎知识点补充

1. 栈中的栈帧(方法)存放了局部变量、操作数栈、动态链接、方法出口等重要信息

     操作数栈:用来进行方法内的操作数的加减乘除

     动态链接:获取栈中对应方法,在方法区中的代码入口。从而获取到该方法的具体代码

     方法出口:方法执行完成后,告诉在main方法中该从哪个地方继续执行。

2. JVM内存分析工具:java自带的jvisualvm(cmd命令打出来即可打开)通过这个工具可以非常动态的看到JVM的内存过程。Visual GC 插件需要在工具:插件:安装visual GC插件才可使用。

*************************************************************JVM调优******************************************************************

3. JVM调优目的

     减少fullGC的次数。GC在进行时,会执行STW(Stop The World),会使应用程序暂停。我们要减少STW的时间和次数

4. 在进行JVM调优时,根据具体的业务逻辑,分析出业务逻辑代码大概创建的对象个数,每个对象占用的内存空间。以及代码关联产生的业务逻辑对象内存。从而大概分析出进行一次这个业务逻辑可能会占用多大的内存。然后再去针对服务器内存做堆内存的分配。

5. 一般在新生代的Eden对象在线程结束后(局部变量指向的对象被释放)。对象基本都会被回收。所以我们在进行JVM调优的时候,尽量的把新生代的内存空间调大。让这些局部变量或者说不会被多次引用的临时对象在Eden和s0和s1中就被GC掉,从而减少内存进入老年代的概率,也就从而减少了FULL GC出现的概率,从而也就减少了长时间STW的出现,也就保证了程序的运行期间不会出现用户线程挂起的问题。

 

 

 

 

 

 

 

 

 

最新回复(0)