首页 > 编程知识 正文

尚学堂java全套资料百度云,java技术分享干货

时间:2023-05-04 00:00:35 阅读:174120 作者:3744

面:为什么要使用双亲委派机制去加载类?

a )避免多个相同字节码的加载,浪费内存。

的加载方法隐式加载: new显示加载: loadClass、forName等类的加载过程如下图所示。

面:loadClass和forName的区别?

通过Class.forName获得的class已经完成了初始化。 (对于MySQL负载驱动程序,需要调用静态代码块来完成一些操作。 )通过ClassLoader.loadClass获得的class尚未链接。 (用于Spring IoC延迟加载机制) Java内存模型JVM内存模型——JDK8应如下图所示。

线程专用:共享程序计数器、虚拟机堆栈和本地方法堆栈线程: MetaSpace,Java堆程序计数器(PC )当前线程运行的字节码行号指示符)行在Native方法的情况下,由计数器的值为Undefined、不会发生存储器泄漏的Java虚拟机堆栈(Stack )Java方法执行的存储器模型中包含多个堆栈帧包含动态链接、返回地址等,对方法的调用将从虚拟机堆栈移动到堆栈。如果动态扩展堆栈时无法请求足够的内存,则会抛出OutOfMemoryError异常。 本地方法堆栈类似于虚拟机堆栈,主要作用于标记为native的方法。

元空间(MetaSpace )用于存储加载的类信息、常量和静态变量。

面:谈谈元空间(MetaSpace)和永久代(PermGen)的区别?

所有的方法领域(JVM规范)的JDK8后元空间的实现通过使用本地存储器代替持续元空间,持续使用JVM存储器,解决了空间不足的问题。面:MetaSpace相比PermGen的优势?

字符串池(从JDK1.7移动到Java堆)是持久性世代,很难确定容易出现性能问题或内存溢出的方法的消息大小。 给持久代调整大小带来困难的持久代带来不必要的复杂性并促进与其他JVM (例如HotSpot和Jrockit )的集成(持久代是HotSpot专有的Java堆) Heap )。

Java-XM s128 m-xmx 128 m-x ss256 k-jar XXX.jar

-Xss :定义每个线程的虚拟机堆栈(堆栈)大小的-Xms :堆的初始值-Xmx :堆可以达到的最大值通常将-Xms和-Xmx设置为相同的值,以避免在扩展堆时出现内存抖动

内存分配策略静态存储:堆栈存储在编译时确定每个数据目标的运行时存储容量要求:数据区要求在编译时是未知的,在运行时模块入口之前确定堆存储。 编译时和运行时模块门户都无法确定要求,请参阅面:说说JVM三大性能调优参数-Xms、-Xmx、-Xss的含义?

联系方式:引用对象、数组时,在堆栈中定义变量以保存堆中目标的首地址管理方式:自动释放堆栈。 堆需要GC空间大小:典型堆栈与小于堆的碎片相关:堆栈生成的内存碎片远小于堆分配方式:堆栈支持静态和动态分配,而堆只支持动态分配效率:

如果调用JDK6:intern方法时字符串常量池以前创建过字符串对象,则返回对池中该字符串的引用。 否则,将字符串对象添加到字符串常量池,并返回对字符串对象的引用。 如果调用JDK6:intern方法时字符串常量池以前创建过字符串对象,则返回对池中该字符串的引用。 否则,如果字符串对象已经存在于Java堆中,则堆中对此对象的引用将添加到字符串常量池中并返回引用。 如果堆中不存在对象,则会在字符串常量池中创建字符串并返回其引用。 最后面:谈谈Java内存模型中堆和栈的区别与联系?

-gO8FzbTK-1626035669625 )

[外链图像导出中……(img-rnwhnjii-162603569626 ) ]

[外链图像导出中……(img-hofyqols-162603569627 ) ]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。