腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
凯哥Java
专栏作者
举报
845
文章
1481164
阅读量
53
订阅数
订阅专栏
申请加入专栏
全部文章
java
编程算法
spring
sql
数据库
http
spring boot
网站
xml
ide
容器镜像服务
网络安全
容器
https
云数据库 SQL Server
云数据库 Redis
javascript
json
maven
jar
tomcat
mybatis
jvm
servlet
api
tcp/ip
git
jdk
微服务
html
linux
apache
缓存
php
腾讯云测试服务
mvc
分布式
jsp
windows
c++
面向对象编程
hashmap
数据结构
nginx
rabbitmq
spring cloud
node.js
打包
github
jquery
eclipse
es
unix
文件存储
命令行工具
yum
uml
bash
存储
python
数据分析
腾讯云开发者社区
Elasticsearch Service
bootstrap
css
android
centos
bash 指令
访问管理
压力测试
ssh
jdbc
ftp
dubbo
kafka
注解
负载均衡
ubuntu
负载均衡缓存
开源
dns
zookeeper
aop
微信
excel
其他
vue.js
oracle
lucene/solr
消息队列 CMQ 版
云推荐引擎
html5
rpc
小程序
boot
com
mysql
project
对象
服务
DNS 解析 DNSPod
access
svn
windows server
laravel
日志服务
grep
selenium
socket编程
powershell
大数据
任务调度
虚拟化
controller
file
form
list
version
word
后台
解决方案
接口
内网穿透
配置
数据
源码
云服务器
官方文档
比特币
区块链
ios
c 语言
ruby
actionscript
ajax
数据备份
yarn
xslt & xpath
云数据库 MySQL
数据迁移
hadoop
wordpress
正则表达式
sql server
自动化测试
gcc
安全
架构设计
wpf
utf8
迁移
awt
bi
bufferedimage
byte
class
config
exe
key
logback
lombok
map
null
poi
pool
redis
scope
select
server
set
table
thymeleaf
ui
var
web
定时任务
反射
分页
工具类
客户端
浏览器
排序
字符串
ICP备案
费用中心
云点播
对象存储
数字货币
mac os
c#
erlang
scala
单片机
memcached
搜索引擎
中文分词
全文检索
analyzer
容器服务
海外加速
SSL 证书
TAPD 敏捷项目管理
腾讯优客
人工智能
企业
数据安全
serverless
游戏
自动化
爬虫
npm
cdn
单元测试
flash
markdown
jenkins
lnmp
网站建设
notepad ++
mqtt
云计算
防火墙
mvcc
sdk
raft
flink
数据库管理
验证码
addeventlistener
admin
app
bigdecimal
binary
blob
boolean
browser
channel
chrome
cmd
configuration
cut
dao
date
dba
decimal
default
distinct
dll
document
double
drawing
druid
echarts
el
elasticsearch
email
embed
field
getelementbyid
header
input
intellij idea
interceptor
ip
java ee
java8
jit
join
junit
kibana
limit
load
logic
manifest
math
message
microsoft
min
model
mp4
multipart
nacos
office
onchange
pojo
port
properties
quartz
resources
response
return
runtime
series
service
settings
sh
sharding
shutdown
solr
stream
string
sum
synchronized
t4
tail
tar
unsigned
visio
word-wrap
插件
递归
动画
队列
服务端
工具
函数
后端
继承
集合
监控
脚本
交换机
开发
路由器
乱码
模型
前后端分离
权限控制
日志
设计模式
事件
数据同步
数组
搜索
统计
文件上传
序列化
需求分析
搜索文章
搜索
搜索
关闭
Redis实战13-集群下线程并发安全问题
nginx
jvm
腾讯云测试服务
云数据库 Redis
api
通过前面两篇(Redis实战11-实现优惠券秒杀下单 Redis实战12-优惠券实现一人一单功能)的学习,我们已经解决了单机情况下优惠券秒杀及一人一单功能。其中,在优惠券秒杀时候,使用到了乐观锁处理的,在一人一单功能时候,使用了悲观锁,synchronized关键字及处理了spring事务失效情况。但是随着业务的增长,单机服务已经不能满足我们需求了,这个时候,需要多台机器来支撑。这就构成了集群,那么在集群模式下,我们再来测试我们的优惠券秒杀及一人一单情况。
凯哥Java
2023-02-25
422
0
【已解决】Idea 启动报错 failed to create jvm:jvm path url或failed to create jvm:error code -1 jvm path
jar
java
ide
jdk
jvm
在: C:\Users\名字\.IntelliJIdea2019.3\config 路径下生成一个文件:idea64.exe.vmoptions
凯哥Java
2022-12-16
1.2K
0
【JVM】浅谈双亲委派和破坏双亲委派
jvm
java
数据库
sql
笔者曾经阅读过周志明的《深入理解Java虚拟机》这本书,阅读完后自以为对jvm有了一定的了解,然而当真正碰到问题的时候,才发现自己读的有多粗糙,也体会到只有实践才能加深理解,正应对了那句话——“Talk is cheap, show me the code”。前段时间,笔者同事提出了一个关于类加载器破坏双亲委派的问题,以我们常见到的数据库驱动Driver为例,为什么要实现破坏双亲委派,下面一起来重温一下。
凯哥Java
2022-12-16
338
0
JVM学习笔记之类装载器-ClassLoader
java
jar
jvm
jdk
负责加载class文件,class文件在文件开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构并且ClassLoader只负责class文件的加载,至于class文件是否可以允许,则由Execution Engine决定。
凯哥Java
2022-12-16
181
0
Java并发编程学习前期知识下篇
缓存
java
编程算法
jvm
通过上一篇《Java并发编程学习前期知识上篇》我们知道了在Java并发中的可见性是什么?volatile的定义以及JMM的定义。我们先来看看几个大厂真实的面试题:
凯哥Java
2022-12-16
163
0
JVM学习系列学习二
java
jvm
运行Java命令时候打印参数,需要添加-XX:+PrintFlagsFinal参数即可。
凯哥Java
2022-12-15
153
0
JVM学习系列学习一
jvm
jdk
java
数据结构
我们在自己电脑上进开发的时候,几乎很少考虑对JVM进行优化。但是,我们写的代码,放到生成环境会出现入下各种情况:
凯哥Java
2022-12-15
241
0
Java 内存模型之堆内存(Heap)
java
jvm
1、什么是 Perm Gen? Perm Gen : Permanent Generation Perm Gen 区是一个特殊的JVM内存区,因为它用来存储用来描述 Class 的 元数据(Class 可以不属于Java语言的一部分,也可以属于),诸如:描述类及其方法。 在大的应用中该区一会儿就满了,并抛出错误:java.lang.OutOfMemoryError: PermGen 然而无论你怎么设置 -Xmx 也不管用。 因为设置其大小的参数不是 -Xmx,而是 -XX:PermGen, -XX:MaxPermGen (不同Java版本略有变化) 2、Heap VS. Stack VS. Perm Heap(堆内存): 使用Java语言创建的所有的引用对象类型,都在此存储。并由 GC (Garbage Collection)对其进行管理, 诸如:释放不再被程序引用的对象所占据的内存。 Stack(栈内存): 与 Heap 相对的是,Stack 存放基础数据类型。诸如:int, char 等。 由程序的执行顺序控制变量的进出栈顺序,而不是由 GC 控制栈内存的管理。 Perm(持久内存): 用于存储类的元数据。诸如:类的定义,方法的定义等。 Perm 的生命周期与 JVM 绑定,而 Heap 的生命周期与程序绑定。 二、堆内存(Heap) 与 Garbage Collection 理解 GC (Garbage Collection),需要理解 Heap 。 JVM 的 Heap 堆内存在物理上被划分为两部分:Young Gen, Old Gen 1、 JVM 内存管理之:Young Gen 所有新创建的 Object 首先被放在 Young Generation 内存区。 如果 Young Generation 内存区满了,则执行 Garbage Collection 。这种 GC 称为 Minor GC。 Young Generation 区又分为三部分: Eden Memory,Survivor0 Memory (S0),Survivor1 Memory(S1). Young Generation 内存区要点: 1、绝大多数新建的 Object 被放在 Eden Memory 2、如果 Eden Memory 内存满了,则进行 GC 操作。 同时把未被 GC 的 Object 移动到 S0 或 S1 中。 此时 Minor GC 也会检查和移动 S0 和 S1 中的对象。 最后使 S0,S1 其中一个置为空。 3、多次 GC 后仍然未被 GC 的 Object 将被移动到 Old Gen 内存区中。 通常 Object 会被 GC 设定一个轮询的阀值。 2、 JVM 内存管理之:Old Gen Old Gen 内存区存放了经过多次 Minor GC 后仍然不能被 GC 的 Object。 与 Young Gen 相同,当 Old Gen 区满了之后将执行 GC 操作,该操作称为:Major GC。 耗用的时间也相对较长。 stop-the-world 事件 Young Gen 和 Old Gen 都可以主动触发 stop-the-world 事件,挂起所有任务,执行 GC 操作。 被挂起的任务只有在 GC 执行完毕后,才会恢复执行。 多数情况下, GC 性能调优(GC tuning)就是指降低 stop-the-world 时 GC 执行的时间。 三、Perm Gen JVM 在 Permanent Generation 或 Perm Gen 内存区中存放应用程序的元数据 (application metadata),用来描述类及其方法的原始信息。 注意:Perm Gen 不是 Heap 的一部分。 Perm Gen 被 JVM 使用于应用程序运行期间(runtime),基于应用所使用到的类。 Perm Gen 中同时包括 Java SE 包中的类。 Perm Gen 只有在执行 Full GC 时才会被 GC。 四、内存管理调优参数 -Xms 设置JVM启动时的堆内存(Heap)的大小 -Xmx For setting the maximum heap size. 设置堆内存(Heap)的最大值 -Xmn 设置 Young Gen 内存区的大小 -XX:PermGen 设置 Perm Gen 内存的初始大小 -XX:MaxPermGen 设置 Perm Gen 内存的最大值 -XX:SurvivorRatio 设置 Eden Gen 与 S0 Gen,S1 Gen 内存的大小比。默认值:8 例如: Yo
凯哥Java
2022-12-15
457
0
Java内存管理-JVM内存模型以及JDK7和JDK8内存模型对比总结(三)
java
jvm
存储
今天介绍一下JVM内部的一些区域,以及具体的区域在运行过程中会发生哪些异内存常! 其实也就对应了内存管理的第一篇中 JVM的第三个阶段,程序运行内存溢出。
凯哥Java
2022-12-15
1.2K
0
【面试题】Java中子类和父类静态代码块、非静态代码块、构造函数的执行顺序总结一览表
c++
jvm
java
在面试的时候,有时候我们会被问到这样的问题:子类A继承父类B,A a = new A();则父类B的构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块执行的先后顺序是什么?
凯哥Java
2022-12-02
528
0
【经验】通过JVM调优,让凯哥个人博客响应速度提升了不少
jvm
不知道大家有没有注意到,在22.10.31 21点之后,凯哥的个人博客站点(凯哥Java:www.kaigejava.com)访问速度提升了不少。那是因为凯哥对站点做了优化。本文就记录优化方面:
凯哥Java
2022-11-01
909
0
一个Java类在运行时候,变量是怎么在JVM中分布的呢?
jvm
通过前面两篇文章的学习,我们知道了一个Java类的生命周期及类加载器。我们可以得到如下两幅图:
凯哥Java
2021-07-02
694
0
JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇
jvm
作为一个使用Java语言开发的程序员,我们都知道,要想运行Java程序至少需要安装JRE(安装JDK也没问题)。我们也知道我们Java程序员编写的程序代码文件是*.java的,而JRE运行的是*.class的文件。所以,我们需要将java文件编译成class文件然后才可以。那么,你有没有想过,一个java文件是怎么运行起来的呢?中间都经历了哪些环节呢?我们都知道JVM是Java虚拟机,那么,有没有思考过JVM的内存模型是什么呢?我们new出来的对象,声明不同类型的变量又是存放在JVM哪个位置呢?
凯哥Java
2021-06-24
376
0
JVM笔记九-GC收集器日志信息学习
jvm
linux
编程算法
在上一篇文章中,我们通过代码运行结果,查看到JVM的堆内存逻辑上分区是三部分,物理上分区是2部分,以及是新生代分区三部分,占比分布是8/1/1。而且我们还通过代码和堆JVM参数配置,制造出了OOM异常。下面我们就来分析GC回收器的日志信息。
凯哥Java
2020-11-21
466
0
JVM笔记八-堆参数调优
jvm
JVM垃圾收集器(Java Garbage Collection)。本教程均在JDK1.8+HotSpot为例来讲解的.
凯哥Java
2020-11-15
626
0
JVM笔记六-堆区知识之对象生命周期和GC的关系
jvm
java
通过上一篇文章的学习,我们对JVM堆区有了初步的认识,接下来,我们继续展开讲解堆区。
凯哥Java
2020-10-24
475
0
JVM学习笔记之栈区
jvm
栈是什么?栈帧又是什么?在JVM中,main方法调用say方法后,是怎么运行的?本文将详细讲解栈。希望大家学了之后,对栈有更深的了解。
凯哥Java
2020-09-20
425
0
JVM笔记二双亲委派机制
jvm
java
编程算法
面向对象编程
bootstrap
JVM类加载器是什么机制?为什么使用这种机制(这种机制的好处是什么)?说下类加载流程?用代码验证类加载机制。为什么要破坏类的这种加载机制?
凯哥Java
2020-08-08
944
0
JVM学习笔记之类装载器-ClassLoader
jvm
java
jdk
负责加载class文件,class文件在文件开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构并且ClassLoader只负责class文件的加载,至于class文件是否可以允许,则由Execution Engine决定。
凯哥Java
2020-08-06
513
0
Java并发之显式锁和隐式锁比较
java
api
jvm
在面试的过程中有可能会问到:在Java并发编程中,锁有两种实现:使用隐式锁和使用显示锁分别是什么?两者的区别是什么?所谓的显式锁和隐式锁的区别也就是说说Synchronized(下文简称:sync)和lock(下文就用ReentrantLock来代之lock)的区别。
凯哥Java
2020-04-16
961
0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
立即发文
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档