西安汇友网站建设,室内设计家装设计,怎么新建网站,广东省建设工程安全协会网站JVM常用命令和参数
常用命令#xff1a; jps#xff1a;查看进程及其相关信息 jmap#xff1a;用来生成dump文件和查看堆相关的各类信息的命令 jstat#xff1a;查看jvm运行时的状态信息 jstack#xff1a;查看jvm线程快照的命令 jinfo#xff1a;查看jvm参数和动态修改…JVM常用命令和参数
常用命令 jps查看进程及其相关信息 jmap用来生成dump文件和查看堆相关的各类信息的命令 jstat查看jvm运行时的状态信息 jstack查看jvm线程快照的命令 jinfo查看jvm参数和动态修改部分jvm参数
常用参数 -Xms初始化堆大小 -Xmx最大堆大小 -Xmn新生代的内存空间大小 -XXSurvivorRatio -Xss每个线程的堆栈大小 -XXPermSize:设置永久代初始值 -XXMaxPerSize设置永久代最大值
解释java堆空间及GC
当通过 Java 命令启动 Java 进程的时候会为它分配内存。内存的一部分用于创建堆空间当程序中创建对象的时候就从堆空间中分配内存。GC 是 JVM 内部的一个进程回收无效对象的内存用于将来的分配。
JVM主要组成部分及其作用
JVM包含两个子系统和两个组件两个子系统为Class loader(类装载)、Execution engine(执行引擎)两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。
作用 首先通过编译器把 Java 代码转换成字节码类加载器ClassLoader再把字节码加载到内存中将其放在运行时数据区Runtime data area的方法区内而字节码文件只是 JVM 的一套指令集规范并不能直接交给底层操作系统去执行因此需要特定的命令解析器执行引擎Execution Engine将字节码翻译成底层系统指令再交由 CPU 去执行而这个过程中需要调用其他语言的本地库接口Native Interface来实现整个程序的功能。
Java 中堆和栈有什么区别
JVM 中堆和栈属于不同的内存区域使用目的也不同。栈常用于保存方法帧和局部变量而对象总是在堆上分配。栈通常都比堆小也不会在多个线程之间共享而堆被整个 JVM 的所有线程共享。
队列和栈是什么有什么区别
队列和栈都是被用来预存储数据的。
操作的名称不同。队列的插入称为入队队列的删除称为出队。栈的插入称为进栈栈的删除称为出栈。可操作的方式不同。队列是在队尾入队队头出队即两边都可操作。而栈的进栈和出栈都是在栈顶进行的无法对栈底直接进行操作。操作的方法不同。队列是先进先出FIFO即队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾不能从中间插入每次离开的成员总是队列头上不允许中途离队。而栈为后进先出LIFO,即每次删除出栈的总是当前栈中最新的元素即最后插入进栈的元素而最先插入的被放在栈的底部要到最后才能删除。
简述Java垃圾回收机制
在java中程序员是不需要显示的去释放一个对象的内存的而是由虚拟机自行执行。在JVM中有一个垃圾回收线程它是低优先级的在正常情况下是不会执行的只有在虚拟机空闲或者当前堆内存不足时才会触发执行那些没有被任何引用的对象并将它们添加到要回收的集合中进行回收。
垃圾回收的优点和原理。并考虑2种回收机制
垃圾回收器通常作为一个单独的低级别的线程运行在不可预知的情况下对内存堆中已经死亡的或很长时间没有用过的对象进行清除和回收。
程序员不能实时的对某个对象或所有对象调用垃圾回收器进行垃圾回收。
垃圾回收有复制垃圾回收、标记垃圾回收、增量垃圾回收。
有什么办法主动通知虚拟机进行垃圾回收
可以。程序员可以手动执行System.gc()通知GC运行但是Java语言规范并不保证GC一定会执行。
说一下 JVM 有哪些垃圾回收算法
标记-清除算法标记无用对象然后进行清除回收。缺点效率不高无法清除垃圾碎片。复制算法按照容量划分二个大小相等的内存区域当一块用完的时候将活着的对象复制到另一块上然后再把已使用的内存空间一次清理掉。缺点内存使用率不高只有原来的一半。标记-整理算法标记无用对象让所有存活的对象都向一端移动然后直接清除掉端边界以外的内存。分代算法根据对象存活周期的不同将内存划分为几块一般是新生代和老年代新生代基本采用复制算法老年代采用标记整理算法。