随笔分类 -  Java-加载类-内存分配回收-调优

JVM内存分配原理,类加载机制,GC回收垃圾
摘要:先上点基础概念 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:w 阅读全文
posted @ 2019-11-05 16:40 aspirant 阅读(857) 评论(0) 推荐(0) 编辑
摘要:JVM内存结构,是很重要的知识,相信每一个静心准备过面试的程序员都可以清楚的把堆、栈、方法区等介绍的比较清楚。 上图,是一张在作者根据《Java虚拟机规范(Java SE 8)》中描述的JVM运行时内存区域结构画的。 很多人都知道Java对象是在堆内存中分配空间的(JIT优化除外),也知道内存分配过 阅读全文
posted @ 2019-10-22 09:19 aspirant 阅读(1627) 评论(0) 推荐(1) 编辑
摘要:关于top命令 经常问load average 参考:load average 定义(网易面试) jvm dump的使用 参考:Jvm dump jstack jmap jstat 介绍与使用(内存与线程) 以及使用jstack定位问题 查看端口:如何在Windows,Linux下查看JAVA端口占 阅读全文
posted @ 2019-09-06 17:07 aspirant 阅读(5905) 评论(0) 推荐(2) 编辑
摘要:还写了个姊妹篇参考:Java 类加载机制(阿里)-何时初始化类 类加载 在class文件中的描述信息都需要加载到jvm才能运行和使用。 jvm的类加载机制:jvm把描述类的数据从class文件中加载到内存,并对数据进行校验,转换解析和初始化,最终形成被jvm使用的Java类型。 生命周期:加载-》验 阅读全文
posted @ 2018-05-14 14:48 aspirant 阅读(8151) 评论(0) 推荐(2) 编辑
摘要:Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双亲委托。 对于JVM来说: 因此,按照这个过程可以想到,如果同 阅读全文
posted @ 2018-05-04 17:50 aspirant 阅读(57402) 评论(6) 推荐(18) 编辑
摘要:Linux 查看端口占用情况 Linux 查看端口占用情况可以使用 lsof 和 netstat 命令。 lsof lsof(list open files)是一个列出当前系统打开文件的工具。 lsof 查看端口占用语法格式: lsof -i:端口号 实例 查看服务器 8000 端口的占用情况: # 阅读全文
posted @ 2018-04-19 10:40 aspirant 阅读(15513) 评论(0) 推荐(0) 编辑
摘要:Java探针参考:Java探针技术在应用安全领域的新突破 最近面试阿里,面试官先是问我类加载的流程,然后问了个问题,能否在加载类的时候,对字节码进行修改 我懵逼了,答曰不知道,面试官说可以的,使用Java探针技术,能够实现 我查了一下关于探针技术的知识: 2. 基于javaAgent和Java字节码 阅读全文
posted @ 2018-04-11 17:19 aspirant 阅读(121371) 评论(7) 推荐(13) 编辑
摘要:Java 是动态编译,跟C++静态编译不同,这就是JIT编译器的原因(Just In Time) HotSpot会把这些部门动态地编译成机器码,Native code, 并对机器码进行优化, 静态编译器通常很难准确 预知程序运行过程中究竟什么部分最需要优化。静态编译器虽然可以把Java 全部编译成N 阅读全文
posted @ 2018-04-11 10:07 aspirant 阅读(1025) 评论(0) 推荐(0) 编辑
摘要:概述 什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配、回收的情况来调整各区域内存比例或者gc回收的策略;更深一层就是根据dump出来的内存结构和线程栈来分析代码中不合理的地方给予改进。eclipse优化主要涉及的是前者,通过gc日志来分析。本文主要是通过分析eclipse gc日志 阅读全文
posted @ 2018-03-28 17:30 aspirant 阅读(386) 评论(0) 推荐(0) 编辑
摘要:G1 垃圾收集器 参考:G1 垃圾收集器入门 G1 与CMS的区别 参考:CMS收集器和G1收集器优缺点 什么是CMS CMS全称 ConcurrentMarkSweep,是一款并发的、使用标记-清除算法的垃圾回收器, 如果老年代使用CMS垃圾回收器,需要添加虚拟机参数-"XX:+UseConcMa 阅读全文
posted @ 2018-03-28 15:04 aspirant 阅读(12846) 评论(1) 推荐(3) 编辑
摘要:CMS收集算法 参考:图解 CMS 垃圾回收机制原理,-阿里面试题 G1收集算法 参考:G1 垃圾收集器入门 首先要知道 Stop the world的含义(网易面试):不管选择哪种GC算法,stop-the-world都是不可避免的。Stop-the-world意味着从应用中停下来并进入到GC执行 阅读全文
posted @ 2018-03-28 15:03 aspirant 阅读(18370) 评论(1) 推荐(1) 编辑
摘要:CMS垃圾回收机制 参考:图解 CMS 垃圾回收机制原理,-阿里面试题 CMS与G1的区别 参考:CMS收集器和G1收集器优缺点 写这篇文章是基于阿里面试官的一个问题:众所周期,G1跟其他的垃圾回收算法差别很大,你了解G1的垃圾回收架构吗?为什么G1可以做到回收时间用户可以设定? G1垃圾回收器其实 阅读全文
posted @ 2018-03-28 15:01 aspirant 阅读(25932) 评论(2) 推荐(4) 编辑
摘要:如果想了解Java内存模型参考:jvm内存模型-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东) 相信和小编一样的程序猿们在日常工作或面试当中经常会遇到JVM的垃圾回收问题,有没有在夜深人静的时候详细捋一捋JVM垃圾回收机制中的知识点呢?没时间捋也没关系,因为小编接下来会给你捋一捋 阅读全文
posted @ 2018-03-28 11:13 aspirant 阅读(71597) 评论(9) 推荐(26) 编辑
摘要:(1)阿里的面试官问了两个问题,可以不可以自己写个String类 答案:如果包名相同 是不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了, 但是如果包的名不同就可以重写。比如: package com.alibaba.dme.bcp.ump.biz.act 阅读全文
posted @ 2017-07-18 15:00 aspirant 阅读(59943) 评论(6) 推荐(12) 编辑
摘要:这个问题阿里经常问,参考:阿里面试 结论: (1)栈信息:jstack <pid>输出的信息。 (2)堆信息:jmap -dump <pid>输出的文件, (3)jstat查看gc情况,jstat -gc <PID> 间隔毫秒数 比如 jstat -gc 12345 5000 也就是每隔5秒打印进程 阅读全文
posted @ 2017-06-13 14:36 aspirant 阅读(18170) 评论(1) 推荐(0) 编辑
摘要:参考:JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器) 1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域。(3)JVM屏蔽了与 阅读全文
posted @ 2017-05-11 17:37 aspirant 阅读(7952) 评论(1) 推荐(1) 编辑