草庐IT

Jvm调优

首先我们可以使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和gc日志,根据实际的各区域内存划分和GC执行时间,觉得是否进行优化,当然我们也可以直接生成堆的dump文件,进行分析,比如GC时间超过1-3秒,或者频繁GC,则必须进行一个优化1.针对JVM堆的设置,一般可以通过-Xms-Xmx限定其最小、最大值,为了防止垃圾收集器在最小、最大之间收缩堆而产生额外的时间,通常把最大、最小设置为相同的值3.年轻代和年老代设置多大才算合理  1)更大的年轻代必然导致更小的年老代,大的年轻代会延长普通GC的周期,但会增加每次GC的时间;小的年老代会导致更频繁的FullGC 

进阶课程1:jvm内存模型

目录JVM内存结构转换总结一下JVM整体结构线程栈JVM栈内存结构栈帧操作数栈局部变量表JVM堆内存结构堆内存非堆内存JMM内容:讲解JMM的三大特性1.原子性2.可见性3.有序性视频JVM内存结构JVM内部由线程栈和堆内存组成。简单描述就是我们的原生类型的局部变量,然后我们常见的对象,引用类型等都是在堆上。每个线程都只能访问自己的线程栈。每个线程都不能访问(看不见)其他线程的局部变量。所有原生类型的局部变量都存储在线程栈中,因此对其他线程是不可见的。线程可以将一个原生变量值的副本传给另一个线程,但不能共享原生局部变量本身。堆内存中包含了Java代码中创建的所有对象,不管是哪个线程创建的。其中

java用位运算实现加减乘除

个人主页:熬夜磕代码丶作品专栏:javase我变秃了,也变强了给大家介绍一款程序员必备刷题平台——牛客网点击注册一起刷题收获大厂offer吧文章目录前言一、常见位运算1.&运算2.|运算3.^运算4.~运算二、位运算实现加法三、位运算实现减法四、位运算实现乘法四、位运算实现除法前言我们经常使用的加减乘除,我们所看到的只是表面的效果,那么加减乘除在底层究竟是怎么实现的?今天就让我们一探究竟.今天用位运算实现的加减乘除不使用任何的加减乘除符号.一、常见位运算1.&运算&运算二进制每一位全1为1,否则为0publicstaticvoidmain(String[]args){inta=1;intb=3

java用位运算实现加减乘除

个人主页:熬夜磕代码丶作品专栏:javase我变秃了,也变强了给大家介绍一款程序员必备刷题平台——牛客网点击注册一起刷题收获大厂offer吧文章目录前言一、常见位运算1.&运算2.|运算3.^运算4.~运算二、位运算实现加法三、位运算实现减法四、位运算实现乘法四、位运算实现除法前言我们经常使用的加减乘除,我们所看到的只是表面的效果,那么加减乘除在底层究竟是怎么实现的?今天就让我们一探究竟.今天用位运算实现的加减乘除不使用任何的加减乘除符号.一、常见位运算1.&运算&运算二进制每一位全1为1,否则为0publicstaticvoidmain(String[]args){inta=1;intb=3

聊聊JVM虚方法表和方法调用

作者:小牛呼噜噜|https://xiaoniuhululu.com计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「小牛呼噜噜」大家好,我是呼噜噜,好久没更新文章了,今天我们来填个坑,在之前的一篇文章深挖⾯向对象编程三⼤特性--封装、继承、多态中我们遗留了一个问题:当父类引用指向子类对象时,JVM是如何知晓调用的是哪个子类的方法?动态绑定和静态绑定我们下文还是用之前文章的例子,简单修改一下:publicclassClassTest{staticclassAnimal{publicvoideat(){System.out.println("动物吃饭!");}pub

【JavaEE】线程的创建及常见方法解析(Tread类)

目录1.Tread类介绍2线程的构造方法——创建线程1.继承Thread类,重写run()方法2.使用Runnbable接口创建线程3.继承Thread,重写run,使用匿名内部类4.实现Runnable,重写run,使用匿名内部类5.使用lambda表达式(重点掌握)3.Tread类常见方法解读 3.1Tread类常见构造方法 3.2Tread类的几个常见属性3.3启动一个线程-start()方法3.4中断一个线程3.5等待一个线程-join() 3.6休眠线程3.7实现一个简单的多线程4.线程的状态4.1线程的六种状态 4.2线程状态和状态转移1.Tread类介绍Thread类是JVM用来

【JavaEE】线程的创建及常见方法解析(Tread类)

目录1.Tread类介绍2线程的构造方法——创建线程1.继承Thread类,重写run()方法2.使用Runnbable接口创建线程3.继承Thread,重写run,使用匿名内部类4.实现Runnable,重写run,使用匿名内部类5.使用lambda表达式(重点掌握)3.Tread类常见方法解读 3.1Tread类常见构造方法 3.2Tread类的几个常见属性3.3启动一个线程-start()方法3.4中断一个线程3.5等待一个线程-join() 3.6休眠线程3.7实现一个简单的多线程4.线程的状态4.1线程的六种状态 4.2线程状态和状态转移1.Tread类介绍Thread类是JVM用来

Java内部类详解(含:成员内部类、局部内部类、匿名内部类、静态内部类)

内部类是什么?字面意思,在类的内部编写的类就叫内部类!即一个类的内部又完整的嵌套了另一个类结构,被嵌套的类称为内部类(innerclass),嵌套其他类的类称为外部类(outerclass)。内部类是类的第五大成员→【提示:类的五大成员是哪些?[属性、方法、构造器、代码块、内部类]】内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。官方给的内部类优点如下:1.每个内部类都能独立的继承一个接口的实现,所以无论外部类是否已经继承了某个(接口的)实现,对于内部类都没有影响。内部类使得多继承的解决方案变得完整;2.方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏;3.方便

Java内部类详解(含:成员内部类、局部内部类、匿名内部类、静态内部类)

内部类是什么?字面意思,在类的内部编写的类就叫内部类!即一个类的内部又完整的嵌套了另一个类结构,被嵌套的类称为内部类(innerclass),嵌套其他类的类称为外部类(outerclass)。内部类是类的第五大成员→【提示:类的五大成员是哪些?[属性、方法、构造器、代码块、内部类]】内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。官方给的内部类优点如下:1.每个内部类都能独立的继承一个接口的实现,所以无论外部类是否已经继承了某个(接口的)实现,对于内部类都没有影响。内部类使得多继承的解决方案变得完整;2.方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏;3.方便

jvm学习笔记

1.JVM快速入门从面试开始:请谈谈你对JVM的理解?java8的虚拟机有什么更新?什么是OOM?什么是StackOverflowError?有哪些方法分析?JVM的常用参数调优你知道哪些?内存快照抓取和MAT分析DUMP文件知道吗?谈谈JVM中,对类加载器你的认识?​ 位置:JVM是运行在操作系统之上的,它与硬件没有直接的交互1.1.结构图方法区:存储已被虚拟机加载的类元数据信息(元空间)堆:存放对象实例,几乎所有的对象实例都在这里分配内存虚拟机栈:虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(StackFrame)用于存储局部变量表、操作栈、动态链接