monica

monica

积分: 255
收藏: 0
注册时间: 10 月前
monica 题目
monica 7 月前
monica 10 月前
monica 10 月前
monica 10 月前
monica 问题答案
monica 3 月前 回答题目 Java 什么情况下会发生栈内存溢出?

如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常。

如果虚拟机在动态扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。

monica 7 月前 回答题目 Python 的数组和元组有什么区别?

主要有3点不同:

  1. 创建:数据用中括号,元组用小括号:
    a_list = [1, 2, 'hello']  # 数组创建方式
    a_tuple = (3, 4, 'world') # 元组创建方式
    
  2. 修改:数组可以更改数据内容也可以修改数据个数,元组则都可以
  3. 速度:数组读取效率比元组慢
monica 10 月前 回答题目 JVM调优的基本思路是什么?

如果CPU使用率较高,GC频繁且GC时间长,可能就需要JVM调优了。

基本思路就是:让每一次GC都回收尽可能多的对象。

对于CMS收集器来说,要合理设置年轻代和年老代的大小。该如何确定它们的大小呢?这是一个迭代的过程,可以先采用JVM的默认值,然后通过压测分析GC日志。

如果看年轻代的内存使用率处在高位,导致频繁的Minor GC,而频繁GC的效率又不高,说明对象没那么快能被回收,这时年轻代可以适当调大一点。

如果看年老代的内存使用率处在高位,导致频繁的Full GC,这样分两种情况:如果每次Full GC后年老代的内存占用率没有下来,可以怀疑是内存泄漏;如果Full GC后年老代的内存占用率下来了,说明不是内存泄漏,要考虑调大年老代。

对于G1收集器来说,可以适当调大Java堆,因为G1收集器采用了局部区域收集策略,单次垃圾收集的时间可控,可以管理较大的Java堆。