首页 > 编程语言 >java基础的一小点

java基础的一小点

时间:2024-04-09 16:55:05浏览次数:21  
标签:java 标记 -- 基础 一小 对象 算法 GC 内存

java文件启动的一套流程:

.java---通过编译器javac---->.class---经过解释器&JIT--->机器码--->电脑可识别运行

 

一般而言,不是开发的安个jre就行,但类似于jsp编译就需要jdk的开发工具。

JIT(just in time)即使编译器,可对热点代码直接编译。所以说比解释性语言快些、解释和编译型语言

jdk9 出现AOT(ahead of time)预先编译,但不能全部都先编译,这是因为cglib的asm技术没有字节码做代理也就废了。

 

创建对象的流程:

1.检查累的加载过程,没加载的加载

2.内存分配:分配内存根据内存的规整,选择使用规整的指针碰撞,还是不规整的空闲队列,而是不是规整由垃圾回收器决定。

当然,内存分配也不是一方风顺,它会经历tlab,先分配内存,如果不足就使用cas+重试

3.初始化零值

4.设置对象头:包含类元信息、运行时的数据(锁状态、哈希值、GC年龄)
5.init: 对JVM是结束,对程序而言才开始

 

jdk8: 

本地内存:元空间(运行时产量池(里面有各种引用))

运行时数据区:堆(jdk7移来的字符串常量池),栈,本地方法栈,程序计数器

堆中是GC主要地方,存放大量对象数据。

栈格式:局部变量表、操作数栈、动态链接、方法出口等

本地方法栈:主要是JNI调用时使用

程序计数器:唯一一个不会出现OOM的地方,1.记录程序执行位置,2.多线程转换上下文定位

 

GC算法:

标记-清除算法:标记出活跃对象,将不活跃的对象清除。执行效率低,存在大量内存碎片。

标记-复制算法:主要是分两块内存,将活跃对象转移另一个空间内存,在统一清除。当活跃对象多的时候不使用,内存缩水一半

标记-整理:同一块内存空间,将活跃对象已到内存另一段,移完后,在这段之外的内存同一清除。

分代收集算法:青年代复制算法、老年代标记-清除或整理算法

 

GC收集器(可以视作GC算法实现)

1.serial:青年代单线程标记-复制算法

2.ParNew:青年代多线程标记-复制算法

3.Parallel Scavenge:青年代多线程标记-复制算法,关注cpu\吞吐量,

4.seral old:兼容1.5之前版本搭配Parallel Scavenge,及cms的后备版本,老年代单线程标记--整理

5.parallel old:老年代多线程标记--整理

6.CMS: 并发处理,旨在降低停顿时间,初始标记-->并发标记->重标记 --->并发标记-清除

7.G1:面向服务器垃圾及回收,支持在多cpu并发,高吞吐量,底停顿,大内存

初始标记--》并发标记--〉终止标记--》筛选

8.ZGA:复制算法,牺牲一些吞吐量,停顿时间10MS, 不随堆的大小与对象的大小改变、堆大小支持8M-4T

快速原因:1.并发的运用,2.使用着色与读屏障,方便对对象的定位

 

注意:

对象内部分布=对象头+数据+对其填充(确保8字节)

对于方法区的访问是直接访问。

对象不一定都是在堆中,可能有栈的,这个查下分配、标量替换优化。

JDK 默认垃圾收集器(使用 java -XX:+PrintCommandLineFlags -version 命令查看):

  • JDK 8:Parallel Scavenge(新生代)+ Parallel Old(老年代)
  • JDK 9 ~ JDK20: G1

ZGA在11中试用、15成熟

 

标签:java,标记,--,基础,一小,对象,算法,GC,内存
From: https://www.cnblogs.com/Phneas/p/18124319

相关文章

  • java -动态sql语句
    数据库算法双子针、动态规划、二分查找、贪心算法、深度优先搜索、字符串、递归、字典树、排序、链表等元素作用描述if......
  • 洛谷题单指南-数学基础问题-P2638 安全系统
    原题链接:https://www.luogu.com.cn/problem/P2638题意解读:把a个红球、b个黑球放入n个盒子,求所有的方法。解题思路:盒子中可以放也可以不放,可以放任意个,因此,题目可以转化为将i个红球(0<=i<=a),j个黑球(0<=j<=b)放入n个盒子的方案数之和,设f(n,i,j)表示将一个红球、j个黑球放入n......
  • Java 实例 - 在控制台上随机得到两个数之间的任意整数值(Random随机数)
       在控制台上随机得到4~11之间的任意值,含4和11 1packagecom.guyu.demo;23importjava.util.Random;45/**6*7*2024年4月9日上午10:39:438*@authorGuyu9*10*随机数示例:11*在控制台上随机得到4~11之间的任意......
  • java-validation(数据校验)
    @PostMapping("/register")@SystemLog(BusinessName="注册用户")//启动AOP实现日志记录publicResponseResultregister(@Validated(ValidateType.INSERT.class)@RequestBodyTsUsertsUser){returntsUserService.register(tsUser);......
  • java-queryWrapper条件
    QueryWrapper1.eq、ne2.gt、ge、lt、le3.between、notBetween4.like、notLike、likeLeft、likeRight5.isNull、isNotNull6.in、notIn7.or、and8.orderByAsc、orderByDesc9.inSql、notInSql(不常用)10.exists、notExists(不常用)11List(不常用)12groupby分组(不常......
  • java-Stream流
    lambda表达式定义:不管是什么对象,lambda表达式主要关注的是对数据进行了什么操作。基本格式(参数列表)->{代码}1.是一个匿名类并且只有一个抽象接口。(笔记)例子:newThread(newRunnable(){@Overridepublicvoidrun(){system。outprintln("新线程中run方法被......
  • 线上服务Java进程假死快速排查、分析
    服务器上的Java进程总是在运行个两三天后就无法响应请求了,具体现象如下:请求业务返回状态码502,查看进程还在,意味着Java进程假死,无法响应请求了;该Java进程占比CPU较高,高达132.8%。使用top命令查看服务器整体运行情况:可以看到PID为14760的Java进程CPU占比132.8%,内存占用37.6%,......
  • 【全开源】JAVA红娘婚恋相亲交友系统源码支持微信小程序+微信公众号+H5+APP
    JAVA红娘婚恋相亲交友系统源码:跨平台交友新纪元,微信小程序、公众号、H5、APP全覆盖在数字化浪潮汹涌的今天,婚恋相亲已不再是传统的线下模式所能满足。JAVA红娘婚恋相亲交友系统源码,以其卓越的跨平台特性和强大的功能优势,为您打造了一个全新的相亲交友体验。无论是微信小程序、......
  • 【全开源】JAVA上门家政服务系统源码微信小程序+微信公众号+APP+H5
    JAVA上门家政服务系统源码:一站式家政服务,微信小程序、公众号、APP、H5全平台覆盖,便捷生活触手可及在现代生活的快节奏中,人们对家政服务的需求日益旺盛。JAVA上门家政服务系统源码,以其高效、便捷的特性,结合微信小程序、公众号、APP和H5平台,为您打造了一站式的家政服务体验,让您......
  • 【全开源】JAVA红娘婚恋相亲交友系统源码支持微信小程序+微信公众号+H5+APP
    JAVA红娘婚恋相亲交友系统源码:跨平台交友新纪元,微信小程序、公众号、H5、APP全覆盖在数字化浪潮汹涌的今天,婚恋相亲已不再是传统的线下模式所能满足。JAVA红娘婚恋相亲交友系统源码,以其卓越的跨平台特性和强大的功能优势,为您打造了一个全新的相亲交友体验。无论是微信小程序、......