美文网首页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