美文网首页JVM
java内存模型的进阶

java内存模型的进阶

作者: DaemonXiao | 来源:发表于2019-03-07 21:36 被阅读29次

    JVM三大性能调优参数-Xms -Xmx -Xss的含义?

    java指令:java- Xms128m -Xmx128m -Xss256 -jar xxxx.jar

    • Xss:规定了每个线程虚拟机栈的大小,影响线程大小
    • Xms:堆的初始值
    • Xmx:堆能达到的最大值

    Java内存中堆和栈的区别?

    存放内容:堆存放对象,栈存放指针(引用变量:指向堆地址),变量
    管理方式:栈自动释放,对需要GC
    空间大小:栈比堆小
    碎片相关:栈产生的碎片远小于堆
    分配方式:栈支持静态和动态分配,而堆支持动态分配
    效率:栈的效率高

    简单说说String的intern()方法

    对于这个方法实在是很少用过,但它却是一个极为重要的方法,在理解java内存模型中。

    String s = new String("abcf");
    s.intern();
    

    上述代码含义就是,(简单版)创建一个s字符串对象,然后把它的引用添加到常量池(也在堆中)。
    (复杂版)JDK6:当调用intern方法时,如果字符串常量池先前已穿件出该字符串对象,则返回池中的该字符串的引用。否则,将此字符串添加到字符串常量池中,并返回该字符串对象的引用。
    JDK6+:当调用inter方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的引用。否则,如果该字符串对象已经存在Java堆中,则将堆中此对象的引用添加到字符常量池中,并返回该对象引用;如果堆中不存在,则在池中创建该字符串并返回其应用。

    Object的finalize()方法的作用是否与C++的析构函数作用相同?

    • 不同,析构函数调用确定,而finalize是不确定的
    • 将未被引用的对象放置于F-Queue队列
    • 方法执行随时可能会被终止
    • 基于对象最后一次重生的机会

    相关文章

      网友评论

        本文标题:java内存模型的进阶

        本文链接:https://www.haomeiwen.com/subject/rfxkpqtx.html