JVM
jvm
羽X瞳
这个作者很懒,什么都没留下…
展开
-
JVM中那些是线程共享区
堆区和方法区是所有线程共享的,栈 本地方法栈 程序计数器是每个线程独有的。原创 2024-05-20 15:16:27 · 93 阅读 · 1 评论 -
一般项目如何排查JVM问题
5.首先,初步猜测频繁fullgc的原因,如果频繁发生fullgc但是有没有出现内存溢出,那么表示fullgc实际上是回收了很多对象了,所以这些对象最好能在younggc过程直接回收掉,避免这些对象进入老年代,对于这种情况,就要考虑这些存活时间不长的对象是不是比较大,导致年轻代放不下,直接进入老年代,尝试加大年轻代大小,如果改完之后,fullgc减少,则证明修改有效。6.同时,还可以找到占用CPU最多的线程,定位具体方法,优化这个方法的执行,看看是否能避免某些对象的创建,从而节省内存。原创 2024-05-20 10:14:36 · 195 阅读 · 0 评论 -
jvm垃圾回收算法
将标记内存的垃圾进行回收,优点效率快,缺点内存碎片多,使用大对象会进行频繁GC,空间利用率低。原创 2024-05-20 09:27:57 · 204 阅读 · 0 评论 -
【java类加载】
BootStarpClassLoader 默认负责加载%JAVA_HOME%lib下的jar包和class文件。ExtClassLoader 负责加载%JAVA_HOME%lib/ext下的jar包和class文件。AppClassLoader 是自定义加载器的父类,负责加载classpath下的类文件。加载 把Java的字节码数据加载到jvm内存中,并映射成jvm认可的数据结构。沙箱保护机制也是对Java底层基础类进行保护,不能以某些包名命名。类加载过程 加载>连接>初始化。原创 2024-05-18 20:27:36 · 326 阅读 · 0 评论 -
【gc 如何判断对象可以被回收】
可达性算法中的不可达对象并不是立即死亡的,而是对象拥有一次自我拯救的机会,对象被系统宣告死亡至少要经历两次标记过程:第一次是经历可达性分析发现没有与GC roots相连接的引用,第二次是在由虚拟机自动建立的Finalizer队列中判断是否需要执行finalize方法。当一个对到GC roots 没有任何引用链,则证明对象是不可用的,那么虚拟机就会判断是可回收对象。每个对象有一个引用计数属性,新增一个引用时计数器+1,引用释放时计数器-1,计数为零时可以被回收。有循环引用的问题,Java没有使用这种方法。原创 2024-05-16 15:58:27 · 217 阅读 · 0 评论