面试还不懂如何回答面试JVM相关的问题,看这一篇就够了

回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议 社招面试如何准备以及JAVA各阶段如何学习。 阅读详情

1.JVM常用的参数有哪些?

标准参数

-version
-help
-server
-cp

 

3.1.2 -X参数

非标准参数,也就是在JDK各个版本中可能会变动

-Xint     解释执行
-Xcomp    第一次使用就编译成本地代码
-Xmixed   混合模式,JVM自己来决定

 

3.1.3 -XX参数

使用得最多的是参数类型

非标准化参数,相对不稳定,主要用于JVM调优和Debug

a.Boolean类型
格式:-XX:[+-]<name>            +或-表示启用或者禁用name属性
比如:-XX:+UseConcMarkSweepGC   表示启用CMS类型的垃圾回收器
 -XX:+UseG1GC              表示启用G1类型的垃圾回收器
b.非Boolean类型  
格式:-XX<name>=<value>表示name属性的值是value
比如:-XX:MaxGCPauseMillis=500

3.1.4 其他参数

-Xms1000M等价于-XX:InitialHeapSize=1000M
-Xmx1000M等价于-XX:MaxHeapSize=1000M
-Xss100等价于-XX:ThreadStackSize=100

所以这块也相当于是-XX类型的参数

3.1.5 查看参数

java -XX:+PrintFlagsFinal -version > flags.txt

 

**值得注意的是"="表示默认值,":="表示被用户或JVM修改后的值**
**要想查看某个进程具体参数的值,可以使用jinfo,这块后面聊**
**一般要设置参数,可以先查看一下当前参数是什么,然后进行修改**

由于文章的篇幅有限,老师这里只能为大家展示部分内容,同时JVM相关的问题全部给大家整理成了PDF,需要领取的直接点赞、转发文章之后,私信我【666】获取即可!

3.1.6 设置参数的常见方式

  • 开发工具中设置比如IDEA,eclipse
  • 运行jar包的时候:java -XX:+UseG1GC xxx.jar
  • web容器比如tomcat,可以在脚本中进行设置
  • 通过jinfo实时调整某个java进程的参数(参数只有被标记为manageable的flags可以被实时修改)

3.1.7 实践和单位换算

1Byte(字节)=8bit(位)
1KB=1024Byte(字节)
1MB=1024KB
1GB=1024MB
1TB=1024GB
(1)设置堆内存大小和参数打印
-Xmx100M -Xms100M -XX:+PrintFlagsFinal
(2)查询+PrintFlagsFinal的值
:=true
(3)查询堆内存大小MaxHeapSize
:= 104857600
(4)换算
104857600(Byte)/1024=102400(KB)
102400(KB)/1024=100(MB)
(5)结论
104857600是字节单位

3.1.8 常用参数含义

参数

含义

说明

-XX:CICompilerCount=3

最大并行编译数

如果设置大于1,虽然编译速度会提高,但是同样影响系统稳定性,会增加JVM崩溃的可能

-XX:InitialHeapSize=100M

初始化堆大小

简写-Xms100M

-XX:MaxHeapSize=100M

最大堆大小

简写-Xms100M

-XX:NewSize=20M

设置年轻化的大小

-XX:MaxNewSize=50M

年轻代最大大小

-XX:OldSize=50M

设置老年代大小

-XX:MetaspaceSize=50M

设置方法区大小

-XX:MaxMetaspaceSize=50M

方法区最大大小

-XX:+UseParallelGC

使用UseParallelGC

新生代,吞吐量优先

-XX:+UseParallelOldGC

使用UseParallelOldGC

老年代,吞吐量优先

-XX:+UseConcMarkSweepGC

使用CMS

老年代,停顿时间优先

-XX:+UseG1GC

使用G1GC

新生代,老年代,停顿时间优先

-XX:NewRatio

新老生代的比值

**比如-XX:Ratio=4,则表示新生代:老年代=1:4,也就是新生代占整个堆内存的1/5**

-XX:SurvivorRatio

两个S区和Eden区的比值

**比如-XX:SurvivorRatio=8,也就是(S0+S1):Eden=2:8,也就是一个S占整个新生代的1/10**

-XX:+HeapDumpOnOutOfMemoryError

启动堆内存溢出打印

当JVM堆内存发生溢出时,也就是OOM,自动生成dump文件

-XX:HeapDumpPath=heap.hprof

指定堆内存溢出打印目录

表示在当前目录生成一个heap.hprof文件

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:g1-gc.log

打印出GC日志

可以使用不同的垃圾收集器,对比查看GC情况

-Xss128k

设置每个线程的堆栈大小

经验值是3000-5000最佳

-XX:MaxTenuringThreshold=6

提升年老代的最大临界值

默认值为 15

-XX:InitiatingHeapOccupancyPercent

启动并发GC周期时堆内存使用占比

G1之类的垃圾收集器用它来触发并发GC周期,基于整个堆的使用率,而不只是某一代内存的使用比. 值为 0 则表示”一直执行GC循环”. 默认值为 45.

-XX:G1HeapWastePercent

允许浪费对空间的占比

默认是10%,如果并发标记可回收的空间小于10%,则不会触发MixedGC。

-XX:MaxGCPauseMillis=200ms

G1最大停顿时间

暂停时间不能太小,太小的话就会导致出现G1跟不上垃圾产生的速度。最终退化成Full GC。所以对这个参数的调优是一个持续的过程,逐步调整到最佳状态。

-XX:ConcGCThreads=n

并发垃圾收集器使用的线程数量

默认值随JVM运行的平台不同而不同

-XX:G1MixedGCLiveThresholdPercent=65

混合垃圾回收周期中要包括的旧区域设置占用率阈值

默认占用率为 65%

-XX:G1MixedGCCountTarget=8

设置标记周期完成后,存活数据上限为
G1MixedGCLIveThresholdPercent 的旧区域执行混合垃圾回收的目标次数

默认8次混合垃圾回收,混合回收的目标是要控制在此目标次数以内

-XX:G1OldCSetRegionThresholdPercent=1

描述Mixed GC时,Old Region被加入到CSet中

默认情况下,G1只把10%的Old Region加入到CSet中

2.JVM中常用的命令有哪些?

2.1.1 jps

查看java进程

The jps command lists the instrumented Java HotSpot VMs on the target system. The command is limited to reporting information on JVMs for which it has the access permissions.

 

2.1.2 jinfo

(1)实时查看和调整JVM配置参数

The jinfo command prints Java configuration information for a specified Java process or core file or a remote debug server. The configuration information includes Java system properties and Java Virtual Machine (JVM) command-line flags.

 (2)查看用法

jinfo -flag name PID 查看某个java进程的name属性的值

jinfo -flag MaxHeapSize PID 
jinfo -flag UseG1GC PID

 

(3)修改

参数只有被标记为manageable的flags可以被实时修改

jinfo -flag [+|-] PID
jinfo -flag <name>=<value> PID

(4)查看曾经赋过值的一些参数

jinfo -flags PID

 

2.1.3 jstat

(1)查看虚拟机性能统计信息

The jstat command displays performance statistics for an instrumented Java HotSpot VM. The target JVM is identified by its virtual machine identifier, or vmid option.

(2)查看类装载信息

jstat -class PID 1000 10   查看某个java进程的类装载信息,每1000毫秒输出一次,共输出10次

 

 

(3)查看垃圾收集信息

jstat -gc PID 1000 10

 

2.1.4 jstack

(1)查看线程堆栈信息

The jstack command prints Java stack traces of Java threads for a specified Java process, core file, or remote debug server.

 

(2)用法

jstack PID

 

(4)排查死锁案例

  • DeadLockDemo
  • //运行主类
    public class DeadLockDemo
    {
        public static void main(String[] args)
        {
            DeadLock d1=new DeadLock(true);
            DeadLock d2=new DeadLock(false);
            Thread t1=new Thread(d1);
            Thread t2=new Thread(d2);
            t1.start();
            t2.start();
        }
    }
    //定义锁对象
    class MyLock{
        public static Object obj1=new Object();
        public static Object obj2=new Object();
    }
    //死锁代码
    class DeadLock implements Runnable{
        private boolean flag;
        DeadLock(boolean flag){
            this.flag=flag;
        }
        public void run() {
            if(flag) {
                while(true) {
                    synchronized(MyLock.obj1) {
                        System.out.println(Thread.currentThread().getName()+"----if获得obj1锁");
                        synchronized(MyLock.obj2) {
                            System.out.println(Thread.currentThread().getName()+"----if获得obj2锁");
                        }
                    }
                }
            }
            else {
                while(true){
                    synchronized(MyLock.obj2) {
                        System.out.println(Thread.currentThread().getName()+"----否则获得obj2锁");
                        synchronized(MyLock.obj1) {
                            System.out.println(Thread.currentThread().getName()+"----否则获得obj1锁");
    
                        }
                    }
                }
            }
        }
    }

  • 运行结果
  •  

  • jstack分析
  •  

    把打印信息拉到最后可以发现

     

    2.1.5 jmap

    (1)生成堆转储快照

The jmap command prints shared object memory maps or heap memory details of a specified process, core file, or remote debug server.

(2)打印出堆内存相关信息

jmap -heap PID
jinfo -flag UsePSAdaptiveSurvivorSizePolicy 35352
-XX:SurvivorRatio=8

 

(3)dump出堆内存相关信息

jmap -dump:format=b,file=heap.hprof PID

 

 

4)要是在发生堆内存溢出的时候,能自动dump出该文件就好了

一般在开发中,JVM参数可以加上下面两句,这样内存溢出时,会自动dump出该文件

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof

设置堆内存大小: -Xms20M -Xmx20M
启动,然后访问localhost:9090/heap,使得堆内存溢出

面试官问你项目中的JVM性能优化你怎么聊?

性能优化

JVM的性能优化可以分为代码层面和非代码层面。

在代码层面,大家可以结合字节码指令进行优化,比如一个循环语句,可以将循环不相关的代码提取到循环体之外,这样在字节码层面就不需要重复执行这些代码了。

在非代码层面,一般情况可以从内存、gc以及cpu占用率等方面进行优化。

注意,JVM调优是一个漫长和复杂的过程,而在很多情况下,JVM是不需要优化的,因为JVM本身已经做了很多的内部优化操作。

那今天我们就从内存、gc以及cpu这3个方面和大家一起探讨一下JVM的优化,但是大家要注意的是****不要为了调优和调优。

4.1 内存

4.1.1 内存分配

正常情况下不需要设置,那如果是促销或者秒杀的场景呢?

每台机器配置2c4G,以每秒3000笔订单为例,整个过程持续60秒

 

4.1.2 内存溢出(OOM)

一般会有两个原因:

(1)大并发情况下

(2)内存泄露导致内存溢出

4.1.2.1 大并发[秒杀]

浏览器缓存、本地缓存、验证码

CDN静态资源服务器

集群+负载均衡

动静态资源分离、限流[基于令牌桶、漏桶算法]

应用级别缓存、接口防刷限流、队列、Tomcat性能优化

异步消息中间件

Redis热点数据对象缓存

分布式锁、数据库锁

5分钟之内没有支付,取消订单、恢复库存等

4.1.2.2 内存泄露导致内存溢出

ThreadLocal引起的内存泄露,最终导致内存溢出

public class TLController { @RequestMapping(value = "/tl") public String tl(HttpServletRequest request) { ThreadLocal<Byte[]> tl = new ThreadLocal<Byte[]>(); // 1MB tl.set(new Byte[1024*1024]); return "ok"; } }

(1)上传到阿里云服务器

jvm-case-0.0.1-SNAPSHOT.jar

(2)启动

java -jar -Xms1000M -Xmx1000M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=jvm.hprof  jvm-case-0.0.1-SNAPSHOT.jar

 (3)使用jmeter模拟10000次并发

39.100.39.63:8080/tl

(4)top命令查看

top
top -Hp PID

 (5)jstack查看线程情况,发现没有死锁或者IO阻塞的情况

jstack PID
java -jar arthas.jar   --->   thread

(6)查看堆内存的使用,发现堆内存的使用率已经高达88.95%

jmap -heap PID
java -jar arthas.jar   --->   dashboard

(7)此时可以大体判断出来,发生了内存泄露从而导致的内存溢出,那怎么排查呢?

jmap -histo:live PID | more
获取到jvm.hprof文件,上传到指定的工具分析,比如heaphero.io

4.2 GC

这里以G1垃圾收集器调优为例

4.2.1 是否选用G1

官网:
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/G1.html#use_cases

(1)50%以上的堆被存活对象占用
(2)对象分配和晋升的速度变化非常大
(3)垃圾回收时间比较长

4.2.2 G1调优

(1)使用G1GC垃圾收集器: -XX:+UseG1GC

修改配置参数,获取到gc日志,使用GCViewer分析吞吐量和响应时间

Throughput       Min Pause       Max Pause      Avg Pause       GC count
  99.16%         0.00016s         0.0137s        0.00559s          12

(2)调整内存大小再获取gc日志分析

-XX:MetaspaceSize=100M
-Xms300M
-Xmx300M

比如设置堆内存的大小,获取到gc日志,使用GCViewer分析吞吐量和响应时间

Throughput       Min Pause       Max Pause      Avg Pause       GC count
  98.89%          0.00021s        0.01531s       0.00538s           12

(3)调整最大停顿时间

-XX:MaxGCPauseMillis=200    设置最大GC停顿时间指标

比如设置最大停顿时间,获取到gc日志,使用GCViewer分析吞吐量和响应时间

Throughput       Min Pause       Max Pause      Avg Pause       GC count
  98.96%          0.00015s        0.01737s       0.00574s          12

(4)启动并发GC时堆内存占用百分比

 

-XX:InitiatingHeapOccupancyPercent=45 
G1用它来触发并发GC周期,基于整个堆的使用率,而不只是某一代内存的使用比例。值为 0 则表示“一直执行GC循环)'. 默认值为 45 (例如, 全部的 45% 或者使用了45%).

比如设置该百分比参数,获取到gc日志,使用GCViewer分析吞吐量和响应时间

Throughput       Min Pause       Max Pause      Avg Pause       GC count
  98.11%          0.00406s        0.00532s       0.00469s          12

4.2.3 G1调优最佳实战

官网:
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc_tuning.html#recommendations)

(1)不要手动设置新生代和老年代的大小,只要设置整个堆的大小

why:https://blogs.oracle.com/poonam/increased-heap-usage-with-g1-gc

G1收集器在运行过程中,会自己调整新生代和老年代的大小 其实是通过adapt代的大小来调整对象晋升的速度和年龄,从而达到为收集器设置的暂停时间目标 如果手动设置了大小就意味着放弃了G1的自动调优

(2)不断调优暂停时间目标

一般情况下这个值设置到100ms或者200ms都是可以的(不同情况下会不一样),但如果设置成50ms就不太合理。暂停时间设置的太短,就会导致出现G1跟不上垃圾产生的速度。最终退化成Full GC。所以对这个参数的调优是一个持续的过程,逐步调整到最佳状态。暂停时间只是一个目标,并不能总是得到满足。

(3)使用-XX:ConcGCThreads=n来增加标记线程的数量

IHOP如果阀值设置过高,可能会遇到转移失败的风险,比如对象进行转移时空间不足。如果阀值设置过低,就会使标记周期运行过于频繁,并且有可能混合收集期回收不到空间。 IHOP值如果设置合理,但是在并发周期时间过长时,可以尝试增加并发线程数,调高ConcGCThreads。

**(4)MixedGC调优 **

-XX:InitiatingHeapOccupancyPercent -XX:G1MixedGCLiveThresholdPercent -XX:G1MixedGCCountTarger -XX:G1OldCSetRegionThresholdPercent

(5)适当增加堆内存大小

(6)不正常的Full GC

 

有时候会发现系统刚刚启动的时候,就会发生一次Full GC,但是老年代空间比较充足,一般是由Metaspace区域引起的。可以通过MetaspaceSize适当增加其大家,比如256M。

4.3 JVM性能优化指南

 

垃圾回收的预调优

1.上线前内存的配置是否符合并发要求,不符合需要调整

从对象的内存布局开始计算,计算出堆内存大小,然后*并发时间,算出堆内存占用情况,然后计算内存是否扛得住,考虑负载均衡以及冗余情况

2.压测的吞吐是多少 ,一般控制在95%以上

极限吞吐的情况下,不超过1%的偏差,调整停顿时间,使用GC view或者其他GC工具分析

Throughput       Min Pause       Max Pause      Avg Pause       GC count
  99.16%         0.00016s         0.0137s        0.00559s          12

3.Full GC的频率以及Young GC的频率,是否需要更换GC收集器

比如前面讲的G1

4.可靠性观测:会不会出现内存泄露,这个可以观测出来的,根据内存变化情况

可以进行两次GC,然后对于Dump出的文件,分析文件内存移动回收情况

5.垃圾收集器的参数是否要改变,这个也是根据吞吐量以及GC来确定的

这个跟第2个情况配合使用

6.CPU的使用率情况

分析死锁以及内存泄漏相关情况

死锁:jstack

 

 

 

 

JVM(Java虚拟机)启动参数 总结来说,JVM启动参数是在启动Java应用程序时传递给JVM的命令行参数,用于配置JVM的行为和性能参数。JVM(Java虚拟机)启动参数是在启动Java应用程序时传递给JVM的命令行参数,用于配置JVM的行为和性能参数。本文将介绍常见的JVM启动参数,包括堆大小、GC策略、类路径等,并给出相应的代码示例和应用场景。例如,-XX:PermSize=256m -XX:MaxPermSize=512m表示将永久代的初始大小设置为256MB,最大大小设置为512MB。-Xmx:设置JVM堆的最大内存大小。 阅读详情

相关推荐

jar启动命令详解以及jvm常用参数

一、jar启动命令 1、最基本的命令:java -jar xxx.jar 表示在当前ssh窗口运行,可按CTRL + C打断程序运行,或者直接关闭窗口,则程序直接退出 2、后台执行:java -jar xxx.jar & 表示在当窗口关闭时,程序才会中止运行。&代表让该命令在后台执行 3、不挂断执行:nohup java -jar xxx.jar & 表示不挂断运行,当账户退出或终端关闭时,程序仍然运行。注意,该命令的所有输出被默认重定向到nohup.out的文件中。 4、指定输出日

qq_38639813的博客 2528

JVM 常见配置参数

JVM 配置常见参数Java虚拟机的参数,在启动jar包的时候通过java 命令指定JVM参数-options表示Java虚拟机的启动参数,class为带有main()函数的Java类,args表示传递给主函数main()的参数。

tian830937的专栏 5170

DataWorks数据安全治理最佳实践

DataWorks基于数据安全治理的常见思路,针对资产梳理、技术体系建设和运营体系建设,提供了一系列数据安全产品能力,您可通过“基础防护建设、数据安全防护措施及策略增强建设、数据安全持续运营”三个阶段在DataWorks上落地数据安全治理项目。参考本文启动数据安全治理项目前,建议您先了解DataWorks数据安全产品相关能力了解DataWorks数据安全产品能力后,您可参考如下三个阶段在DataWorks上落地数据安全治理项目。

soso1968的博客 1439

JVM-JVM核心调优参数、线上排查命令与实战性能优化全教程

文章目录1:JVM参数1 标准参数2 -X参数3 -XX参数4 其他参数5 查看参数6 设置参数的常见方式7 实践和单位换算8 常用参数含义2:常用命令1 jps2 jinfo3 jstat4 jstack5 jmap6 性能优化3:jvm优化图 1:JVM参数 1 标准参数 -version -help -server -cp [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E3AIgsfB-1653197252016)(images/37.png)] 2 -X参数 非标

苍煜 3627

安卓App开发 篇三:Android SDK和API

Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少模板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作。hl=zh-cnhl=zh-cnWorkManager 是 Android Jetpack 的一部分,是用于持久性工作的推荐解决方案,适用于需要通过应用重启和系统重新启动来调度的工作,也是后台处理操作的主要推荐 API。立即执行:必须立即开始且很快完成的任务,可以加急,使用和Worker,通过对调用处理加急工作。

生活在别处 1286

rk3588上适配wifi模组aic8800

记录一下在rk3588上调试aic8800,调试分为Debian11以及Android12两个平台,这里主要是讲过程以及修改的过程,以补丁的形式来提供解决方法。在Debian11下主要通过配置设备树、编译驱动并自动加载固件完成调试,详细介绍了设备树修改、驱动编译脚本调整和驱动加载流程。

m0_60805802的博客 1006

项目中jvm启动参数设置

jvm启动参数在tomcat或者jar启动项目中的设置方式

mmzzy20150928的博客 2534

【AFAC2026金融智能-赛题二】2亿像素的面条图,我切了1000刀拼回完美Markdown

摘要: AFAC2026金融智能创新大赛的「复杂金融文档还原挑战」任务是将高分辨率金融文档截图转换为结构化Markdown文本。面对2亿像素的“面条图”和严格的计算限制(禁用主流大模型,仅允许调用FinixDoc-VL API且模型需小于10M),作者提出四层流水线解决方案: 图像预处理:通过文本行投影检测在行间隙处智能切图,避免截断文字; API调度:5路并发轮询请求,结合内容哈希缓存与指数退避重试机制优化调用效率; 后处理:采用最长公共子串匹配去除文本重叠,并设计表格对齐算法修复跨块表格; 结果输出:按

172

面试的时候突然遇到答不上的问题怎么办?

前言 今天给大家讲讲面试过程当中最长遇到的窘境,也是最能体现一个候选人临场应变能力的地方,那就是当我们在面试的过程当中,遇到的问题回答不上来的时候,该怎么办。 误区 在开始讲解之前,先纠正一个误区,那就是对于一场面试而言,最后的结果**好坏并不完全取决于面试当中的问题是否都回答了上来。能不能录取和是否回答出所有问题并没有直接的联系。**换句话说,我自己经历过的,无论是面试也好,还是面别人也罢,问题...

beibei_programme的博客 7万+

(11-3-03)多任务与元强化学习:综合实战:基于元强化学习的迷宫导航系统(3)

本文介绍了策略网络隐空间可视化的实现方法及其在强化学习中的应用。通过设计visualize_latent_space函数,使用t-SNE算法将高维隐空间特征降维至二维进行可视化,直观展示策略网络在不同任务中的特征分布。文章详细阐述了实现流程:状态收集、t-SNE降维和可视化绘图,并提供了完整的Python代码示例。实验结果表明,该方法能有效分析策略网络的学习过程与适应能力,为优化模型提供重要依据。同时,文章还介绍了主程序的完整流程,包括环境初始化、元智能体训练与评估、学习策略比较等环节,最后对实验结果进行可

码农三叔 1044

KVM — 与 QEMU 和 Libvirt 的关系

目录目录 前言 KVM QEMU KVM 与 QEMU qemu-kvm Libvirt Libvirt 在 OpenStack 中的应用前言如果是刚开始接触虚拟机技术的话, 对上述的概念肯定会有所混淆, 傻傻的分不清. 尤其在看虚拟化技术文档时导致理解能力下降, 所以在开始学习虚拟化技术之前对这些概念有一个整体的认识和清晰的理解, 就显得很有必要了.KVMKVM(Kernel-basedVirtu

烟云的计算 5739

Java初中级工程师面试指南:从理论到实战的完美回答

Java面试备战指南:15大核心问题精解 本文为Java初中级工程师提供全面的面试解决方案,涵盖Java基础、JVM并发、数据库、框架和项目架构五大核心领域。精选15个高频面试题,每个问题包含: 回答思路 - 逻辑清晰的解题框架 示例代码 - 典型场景的代码实现 完美回答 - 专业简洁的应答模板 重点内容: 集合框架:ArrayList与LinkedList的底层对比 多线程:Thread与Runnable的优劣势分析 JVM内存:堆栈区别及OOM问题解决方案 MySQL索引:B+树原理与索引优化实践 缓存

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 2405

python全栈入门到实战【基础篇 02】环境搭建:Python解释器与PyCharm、VSCode编辑器安装配置详解

本文详解Python环境搭建步骤。首先安装解释器(运行代码核心),需从官网下载,选3.8及以上版本(勿选2.x)。Windows安装必勾“Add Python.exe to PATH”,验证用`python --version`;Mac选universal2安装包,验证用`python3 --version`。 编辑器二选一:PyCharm社区版(免费,新手推荐),安装后需配置解释器路径;VSCode轻量,需装Python插件并选择解释器。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 5万+

【Java面试题】如何回答GC相关问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/zjkC050818/article/details/78376588 </div> <link rel="stylesheet" href="https://csdnimg.cn/release/pho...

super-yong的博客 658

*手把手教你学 Simulink——压缩机用永磁同步电机无位置传感器 I‑F 启动(Sensorless I/F Starting)控制仿真

dtdi^α​​zα​e^α​ω^θ^​=Ls​1​(−Rs​i^α​+usα​−zα​)=K⋅sign(i^α​−iα​)=zα​+Kpll​⋅(i^α​−iα​)同理 β=PLL(e^α​,e^β​)=∫ω^dt​。给定 Id​=Iset​, Iq​=f(θopen​)按设定 fstart​(t)Iq​=k⋅sin(θopen​)投影 → 恒幅 Is​=Id2​+Iq2​​。​ 将 Id​,Iq​→ Iα​,Iβ​→ SVPWM。Id​=Ialign​(弱对齐 → 防抖动)

amy_mhd的博客 39

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java面试问题笔记——JVM

1、知识点汇总 JVM是Java运行基础,面试时一定会遇到JVM的有关问题,内容相对集中,但对只是深度要求较高. 其中内存模型,类加载机制,GC是重点方面.性能调优部分更偏向应用,重点突出实践能力.编译器优化和执行模式部分偏向于理论基础,重点掌握知识点. 需了解 内存模型各部分作用,保存哪些数据. 类加载双亲委派加载机制,常用加载器分别加载哪种类型的类. GC分代回收的思想和依据以及不同垃圾回收...

努力学习的大小宝 8633

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

2022年最新面试JVM面试追魂夺命17问,教科书级回答

文章目录前言1.JVM的运行时数据区有哪些?2.什么是堆内存?堆内存包含哪些部分?3.什么是内存溢出?4.什么是内存泄漏?与内存溢出有什么关系?与内存溢出的关系!5.你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。CMS收集器和G1收集器的区别6.常用的JVM启动参数有哪些?7.设置堆空间的最大值(-Xmx)应该要考虑哪些因素?8.什么是STW?什么是安全点,什么是安全区域?安全点安全区域9.如果CPU使用率突然飙升,你会怎么排查?10.判断一个对象应该被回收11.回收方

一名很普通的互联网打工人 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

15个经典面试问题及回答思路,很多人死在了最后一个问题上

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。

芯_v_648374雨馨博客 1559

大厂面试官必问的那些JVM问题。到底应该怎么回答

这是传说中程序员的一天:8:00 闹铃第N遍响起,木然起床;9:00 地铁里各种气味交织,拼命把手机端到脸前;10:00 嚼着公司楼下的煎饼,开始敲敲敲敲敲代码12:00...

weixin_43167418的博客 1282

介绍一下JVM内存结构面试回答(后续会继续补充)

Java对于内存的管理是采用分区的方式进行管理的、不同区域的特性、存储的数据都是不同的。根据《Java虚拟机规范》的规定、Java虚拟机所管理的内存将会包括以下几个运行时数据区域分析:首先介绍一下程序计数器。它是一块一块较小的内存空间、每个线程都有独立的程序计数器、是线程的它记录了当前线程所执行的字节码指令地址(也就是说下一条将要执行的指令)。如果执行的是 Java 方法、它记录的是正在执行的字节码地址如果执行的是Native方法、则为空。程序计数器是唯一一个不会出现。

wy990880的博客 1282
上一篇: Nacos 和 Apollo中的 长轮询 定时机制,太好用了
下一篇: 30分钟带你图解 Kafka 生产者初始化核心流程
java_lujj
博客等级 码龄4年 18粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值