首页
统计
关于
Search
1
Sealos3.0离线部署K8s集群
1,087 阅读
2
类的加载
742 阅读
3
Spring Cloud OAuth2.0
726 阅读
4
SpringBoot自动装配原理
691 阅读
5
集合不安全问题
589 阅读
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
FastApi
登录
Search
标签搜索
Java
CSS
mysql
RabbitMQ
JavaScript
Redis
JVM
Mybatis-Plus
Camunda
多线程
CSS3
Python
Spring Cloud
注解和反射
Activiti
工作流
SpringBoot
Mybatis
Spring
html5
蘇阿細
累计撰写
390
篇文章
累计收到
4
条评论
首页
栏目
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
FastApi
页面
统计
关于
搜索到
157
篇与
的结果
2020-11-30
新生区、老年区、永久区
1、新生区类:诞生和成长的地方,甚至死亡伊甸园区:所有的对象都是在伊甸园区new出来的幸存者区2、老年区注:经验证,99%的对象都是临时对象3、永久区这个区域常驻内存,用来携带JDK自身携带的Class对象。Interface元数据,存储Java运行时的一些环境或类信息(这个区域不存在垃圾回收),关闭虚拟机就会释放这个区域的内存。Jdk 1.6之前:永久代,常量值在方法区中Jdk 1.7:永久代慢慢退化,去永久代,常量池在堆中Jdk 1.8之后:无永久代,常量池在元空间会出现OOM的情况:启动类加载了大量的第三方jar包;Tomcat部署的应用过多;大量动态生成的反射类不断被加载等
2020年11月30日
121 阅读
0 评论
0 点赞
2020-11-29
堆
Heap,一个JVM只有一个堆内存,堆内存的大小可以调节类加载器读取了类文件以后,一般会把类,方法,常量,变量……放到堆中,保存所有引用类型的真实对象堆内存中细分为三个区域:新生区(伊甸园区) young/new养老区 old永久区 perm注:GC垃圾回收主要在伊甸园区和养老区假设内存满了,会报OutOfMemoryError错误package com.sw.lesson; import java.util.Random; /** * @Author suaxi * @Date 2020/11/29 22:01 */ public class Test { public static void main(String[] args) { String s = "abcdefg"; while(true){ s += s + new Random(1234567891) + new Random(1234567891); } } } 报错如下:在Jdk 8以后,永久存储区改名为元空间。
2020年11月29日
166 阅读
0 评论
0 点赞
2020-11-29
三种JVM
1、sun公司 HotSpot2、BEA JRockit3、IBM J9 VM
2020年11月29日
52 阅读
0 评论
0 点赞
2020-11-29
栈
1、栈:数据结构2、栈:先进后出,后进先出 队列:先进先出(FIFO:First Input First Output) 喝多了吐是栈,吃多了拉是队列3、栈:栈内存,主管程序的运行,生命周期和线程同步;生命周期结束,栈内存释放(一旦线程结束,栈随之结束),对于栈来说,不存在垃圾回收问题4、栈:8大基本类型+对象引用+实例的方法5、栈运行原理:栈帧6、栈 + 堆 +方法区:交互关系
2020年11月29日
50 阅读
0 评论
0 点赞
2020-11-29
方法区
Method Area 方法区方法区被所有线程共享,所有字段和字节码,以及一些特殊方法,如构造函数,接口代码也定义在此。所有定义的方法的信息都保存在该区域,此区域属于共享区间静态变量、常量、类信息(构造方法、接口定义)、运行时的常量池存在方法区中,但是实例变量存放在堆内存中,和方法区无关static,final,Class,常量池
2020年11月29日
58 阅读
0 评论
0 点赞
2020-11-29
Native
编写一个多线程启动类package com.sw.lesson; /** * @Author suaxi * @Date 2020/11/29 15:56 */ public class Demo01 { public static void main(String[] args) { new Thread(() ->{ },"Thread01").start(); } } 查看start方法的源码 public synchronized void start() { /** * This method is not invoked for the main method thread or "system" * group threads created/set up by the VM. Any new functionality added * to this method in the future may have to also be added to the VM. * * A zero status value corresponds to state "NEW". */ if (threadStatus != 0) throw new IllegalThreadStateException(); /* Notify the group that this thread is about to be started * so that it can be added to the group's list of threads * and the group's unstarted count can be decremented. */ group.add(this); boolean started = false; try { start0(); //调用了start0方法 started = true; } finally { try { if (!started) { group.threadStartFailed(this); } } catch (Throwable ignore) { /* do nothing. If start0 threw a Throwable then it will be passed up the call stack */ } } } private native void start0(); private native void start0(); /* native:凡是带了native关键字的,说明java的作用范围达不到了,会去调用底层C语言的库 进入本地方法栈 调用本地接口 JNI(Java Native Interface) JNI的作用:扩展Java的使用,融合不同的编程语言为Java所用 在内存中专门开辟一块标记区域:Native Method Stack,登记 native方法 在最终执行的时候,加载本地方法库中的方法通过JNI */
2020年11月29日
44 阅读
0 评论
0 点赞
2020-11-29
PC寄存器
程序计数器:Program Computer Register 每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向一条指令的地址,也是即将要执行的指令代码),在执行引擎读取下一条指令,是一个非常小的内存空间。
2020年11月29日
58 阅读
0 评论
0 点赞
2020-11-29
沙箱(sandbox)安全机制
Java安全模型的核心——Java沙箱(sandbox),沙箱机制就是将Java代码限定在JVM特定的运行范围中,并且严格限制代码对本地系统资源访问,以此保证对代码的有效隔离,防止对本地系统造成破坏。沙箱的基本组件:1、字节码校验器(bytecode verifier):确保Java类文件遵循Java语言规范,帮助Java程序实现内存保护,但并不是所有的类文件都会经过字节码校验,如:核心类。2、类装载器(class loader):在3个方面对Java沙箱起作用防止恶意代码干涉正常的代码守护被信任的类库边界将代码归入保护域,确定代码可以进行哪些操作虚拟机为不同的类加载器载入的类提供不同的命名空间,命名空间由一系列唯一的名称组成。类装载器采用双亲委派机制:1、从最内层JVM自带类加载器开始加载,外层恶意同名类得不到加载从而无法使用2、严格通过包来区分访问域(外层恶意的类通过内置代码也无法获得权限访问到内层类)存取控制器(access controller):控制核心API对操作系统的存取权限,同时控制策略的设定可以由用户指定安全管理器(security manager):是核心API和操作系统之间的主要接口。实现权限控制,比存取控制器优先级高安全软件包(security package):java.security下的类和扩展包下的类,允许用户为自己的应用增加新的安全性,包括:安全提供者消息摘要数字签名加密鉴别
2020年11月29日
78 阅读
0 评论
0 点赞
1
...
14
15
16
...
20