【JVM】JVM调参的常用参数以及Java中的4中引用类型

1. 参数类型

  • 标配参数:
    -version-help\java -showversion

  • X参数:
    图片说明

  • XX参数:
    Boolean类型
    图片说明

    以打印垃圾回收细节为例。使用jps -l锁定需要查看的进程号,使用jinfo –Flag PrintGCDetails + 进程号来查看是否开启打印GCDetails。
    图片说明

    如果没有打开,那么在VM options中添加命令-XX:+PrintGCDetails

图片说明

  • KV设值类型,例如设定堆内存、元空间等。
    -XX: 属性key = 属性值value,例如-XX: MetaspaceSize = 128m-XX: MaxTenuringThreshold = 15

2. 初始默认值

图片说明
图片说明

没有冒号说明是默认的,有说明是修改后的!

图片说明
图片说明
图片说明

3. 堆内存复习

图片说明

堆内存初始大小约为物理内存的64分之1,最大堆内存默认约四分之一。

4. 常用参数清单和配置

1. -Xms和-Xmx

图片说明

((这两个参数最好设置的一样大,避免频繁的GC。**

2. -Xss

图片说明

3. -Xmn

设置新生代大小。

4. -XX:MetaspaceSize

图片说明

5. -XX:+PrintGCDetails

图片说明
图片说明
图片说明

6. -XX:SurvivorRatio

调整eden和survivor区的比例。

图片说明

7. -XX:NewRatio

调整新生代和老年带比例。
图片说明

8. -XX:MaxTenuringThreshold

设置垃圾最大年龄,默认15次,JAVA8设置最高值为15,否则不能启动JVM。

图片说明

9. 再谈4种引用

参考 https://www.jianshu.com/p/e66d03c3e614

  1. 强引用(Strong Reference)
    强引用是指在程序代码中普遍存在的,类似“Object obj=new Object()”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。
    只要某个对象有强引用与之关联,JVM必定不会回收这个对象,即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。但是你可以使用obj = null来辅助JVM进行回收。

  2. 软引用(Soft Reference)
    软引用是用来描述一些有用但并不是必需的对象。对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。因此,这一点可以很好地用来解决OOM的问题,并且这个特性很适合用来实现缓存:比如网页缓存、图片缓存等。JDK 1.2之后,提供了SoftReference类来实现软引用。

import java.lang.ref.SoftReference;

public class Main {
    public static void main(String[] args) {

        SoftReference<String> sr = new SoftReference<String>(new String("hello"));
        System.out.println(sr.get());
    }
}
  1. 弱引用(WeakReference)
    弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象
import java.lang.ref.WeakReference;

public class Main {
    public static void main(String[] args) {

        WeakReference<String> sr = new WeakReference<String>(new String("hello"));

        System.out.println(sr.get());
        System.gc();                //通知JVM的gc进行垃圾回收
        System.out.println(sr.get());
    }
}

输出结果
hello
null

  1. 虚引用(PhantomReference)
    虚引用和前面的软引用、弱引用不同,它并不影响对象的生命周期。在java中用java.lang.ref.PhantomReference类表示。如果一个对象与虚引用关联,则跟没有引用与之关联一样,在任何时候都可能被垃圾回收器回收。它不能单独使用也不能通过它访问对象,需引用必须和引用队列联合使用。

图片说明

import java.lang.ref.PhantomReference;
import java.lang.ref.ReferenceQueue;


public class Main {
    public static void main(String[] args) {
        ReferenceQueue<String> queue = new ReferenceQueue<String>();
        PhantomReference<String> pr = new PhantomReference<String>(new String("hello"), queue);
        System.out.println(pr.get());
    }
}
全部评论

相关推荐

头像
04-27 15:11
已编辑
华东师范大学 算法工程师
暑期实习从2月开始投,面了两个月,流程该挂的都挂完了,腾讯字节一共号称是1.7w个hc,不知道都发给谁了,估计今年秋招要难顶。Timeline米哈游、美团、蚂蚁、微软等公司直接简历挂穿,没进面。携程:3.3&nbsp;投递、测评3.12&nbsp;笔试3.18&nbsp;一面3.25&nbsp;二面4.13&nbsp;ai面(hr面)4.14&nbsp;英语测评4.23&nbsp;offer(已拒)腾讯:2.6&nbsp;测评2.28&nbsp;wxg一面3.5&nbsp;wxg二面(挂)3.11&nbsp;teg一面3.21&nbsp;teg二面(取消)3.31&nbsp;teg一面4.10&nbsp;teg二面(挂)4.21&nbsp;wxg一面4.24&nbsp;wxg二面(挂)字节:1.28&nbsp;aml约面(取消)3.17&nbsp;火山一面(挂)4.8&nbsp;aml一面(挂)4.20&nbsp;抖音data一面(挂)阿里:3.23&nbsp;投递、测评3.28&nbsp;笔试3.31&nbsp;淘天一面4.8&nbsp;钉钉一面4.9&nbsp;淘天二面4.10&nbsp;阿里控股一面4.12&nbsp;钉钉二面(取消)4.15&nbsp;淘天hr面4.16&nbsp;淘天offer(已接)4.21&nbsp;高德一面(取消)4.22&nbsp;淘宝闪购一面(取消)面试最大的感触是,现在撞上ai转型,一堆老业务急着转向,新业务非常不成熟,研究型的组bar非常高根本进不去,业务侧挂着算法的岗位干的都是工程活,面试却又要问算法,另外agent的落地也远没有那么广,绝大多数还是那套写死的系统调一下llm&nbsp;api或者做做rag,其余少部分真的在搭agent的,基本不能在线上服务用什么很智能的模型,现阶段成本太高,进去大概率就是给垃圾模型从工程方面兜底,除了业务场景的应用和数据经验以外,技术方面很难有什么提升。算法岗做不了基模的还是去搜广推好,之前判断失误了完全没投,秋招不知道还进不进得去。
绿糖滑稽:携程这什么雷霆流程时长
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务