黑客24小时在线接单网站

怎么联系真的黑客,24小时在线黑客联系方式,24小时在线联系黑客,正规黑客私人接单,黑客QQ联系方式

jdk7-xss的简单介绍

本文目录一览:

关于java内存模型中read和load操作的一个问题,急求大神指点

我这是么个理解。

所谓的“线程的工作内存”就是线程栈,这个栈大小是通过 vm参数 -xss 来设置的。不同版本的jdk对应的大小不一样,有的是512k。上面的read操作和load操作,我理解实际整体是在一个操作步骤中,所谓的read应是根据引用地址从堆中(即通过-Xms -Xmx 参数来设置的)读出来;然后load过程,就是在线程运算需要使用此变量时,将变量的具体值(即引用指向的内存地址存储的数据)压入线程栈。

这也就是为什么如果在并发时,同一个变量不加锁会导致结果不可预料的问题。因为不同线程运算时,都会将变量值压入当前线程栈而不是直接对堆上变更直接进行操作,这样就存在一个时间窗口会导致不同的线程对堆中同一个变量值的不同“副本”进行操作,从而导致结果不可预料,也就引用了并发冲突问题。

elasticsearch java 怎么设置 ignore

今天,事情终于发生了。Java6(Mustang),是2006年早些时候出来的,至今仍然应用在众多生产环境中,现在终于走到了尽头。已经没有什么理由阻止迁移到Java7(Dolphin)上了。

这也促使我想写一篇关于在ElasticSearch上配置Java6和7的细微差异的博文。

Elasticsearch对Java虚拟机进行了预先的配置。通常情况下,因为这些配置的选择还是很谨慎的,所以你不需要太关心,并且你能立刻使用ElasticSearch。

但是,当你监视ElasticSearch节点内存时,你可能尝试修改一些配置。这些修改是否会改善你的处境?

这篇博文尝试揭开Elasticsearch配置的神秘面纱,并且讨论最常见的调整。最终,会给出一些推荐的配置调整。

Elasticsearch JVM 配置概览:

这些是Elasticsearch 0.19.11版本的默认配置。

JVM参数 Elasticsearch默认值 Environment变量

-Xms 256m ES_MIN_MEM

-Xmx 1g ES_MAX_MEM

-Xms and -Xmx ES_HEAP_SIZE

-Xmn ES_HEAP_NEWSIZE

-XX:MaxDirectMemorySize ES_DIRECT_SIZE

-Xss 256k

-XX:UseParNewGC +

-XX:UseConcMarkSweepGC +

-XX:CMSInitiatingOccupancyFraction 75

-XX:UseCMSInitiatingOccupancyOnly +

-XX:UseCondCardMark (commented out)

首先你注意到的是,Elasticsearch预留了256M到1GB的堆内存。

这个设置适用于开发和演示环境。开发人员只需要简单的解压发行包,再执行./bin/elasticsearch -f就完成了Elasticsearch的安装。当然这点对于开发来说非常棒,并且在很多场景下都能工作,但是当你需要更多内存来降低Elasticsearch负载的时候就不行了,你需要比2GB RAM更多的可用内存。

ES_MIN_MEM/ES_MAX_MEM是控制堆大小的配置。新的ES_HEAP_SIZE变量是一个更为便利的选择,因为将堆的初始大小和最大值设为相同。也推荐在分配堆内存时尽可能不要用内存的碎片。内存碎片对于性能优化来说非常不利。

ES_HEAP_NEWSIZE是可选参数,它控制堆的子集大小,也就是新生代的大小。

ES_DIRECT_SIZE控制本机直接内存大小,即JVM管理NIO框架中使用的数据区域大小。本机直接内存可以被映射到虚拟地址空间上,这样在64位的机器上更高效,因为可以规避文件系统缓冲。Elasticsearch对本机直接内存没有限制(可能导致OOM)。

由于历史原因Java虚拟机有多个垃圾收集器。可以通过以下的JVM参数组合启用:

JVM parameter Garbage collector

-XX:+UseSerialGC serial collector

-XX:+UseParallelGC parallel collector

-XX:+UseParallelOldGC Parallel compacting collector

-XX:+UseConcMarkSweepGC Concurrent-Mark-Sweep (CMS) collector

-XX:+UseG1GC Garbage-First collector (G1)

UseParNewGC和UseConcMarkSweepGC组合启用垃圾收集器的并发多线程模式。UseConcMarkSweepGC自动选择UseParNewGC模式并禁用串行收集器(Serial collector)。在Java6中这是默认行为。

CMSInitiatingOccupancyFraction提炼了一种CMS(Concurrent-Mark-Sweep)垃圾收集设置;它将旧生代触发垃圾收集的阀值设为75.旧生代的大小是堆大小减去新生代大小。这告诉JVM当堆内容达到75%时启用垃圾收集。这是个估计的值,因为越小的堆可能需要越早启动GC。

UseCondCardMark将在垃圾收集器的card table使用时,在marking之前进行额外的判断,避免冗余的store操作。UseCondCardMark不影响Garbage-First收集器。强烈推荐在高并发场景下配置这个参数(规避card table marking技术在高并发场景下的降低吞吐量的负面作用)。在ElasticSearch中,这个参数是被注释掉的。

有些配置可以参考诸如Apache Cassandra项目,他们在JVM上有类似的需求。

总而言之,ElastciSearch配置上推荐:

1. 不采用自动的堆内存配置,将堆大小默认最大值设为1GB

2.调整触发垃圾收集的阀值,比如将gc设为75%堆大小的时候触发,这样不会影响性能。

3.禁用Java7默认的G1收集器,前提是你的ElasticSearch跑在Java7u4以上的版本上。

JVM进程的内存结果

JVM内存由几部分组成:

Java代码本身:包括内部代码、数据、接口,调试和监控代理或者字节码指令

非堆内存:用于加载类

栈内存:用于为每个线程存储本地变量和操作数

堆内存:用于存放对象引用和对象本身

直接缓冲区:用于缓冲I/O数据

堆内存的大小设置非常重要,因为Java的运行依赖于合理的堆大小,并且JVM需要从操作系统那获取有限的堆内存,用于支撑整个JVM生命周期。

如果堆太小,垃圾回收就会频繁发生,发生OOM的几率会很大。

如果堆太大,垃圾回收会延迟,但是一旦回收,就需要处理大量的存活堆数据。并且,操作系统的压力也会变大,因为JVM进程需要更大的堆,产生换页的可能性就会提高。

注意,使用CMS垃圾收集器,Java不会把内存还给操作系统,因此配置合理的堆初始值和最大值就非常重要。

非堆内存由Java应用自动分配。没有什么参数控制这里的大小,这是由Java应用程序代码自己决定的。

栈内存在每个线程中分配,在Elasticsearch中,每个线程大小必须由128K增加到256K,因为Java7比Java6需要更大的栈内存 ,这是由于Java7支持新的编程语言特征来利用栈空间。比如,引入了continuations模型,编程语言的一个著名概念。Continuations模型对于

协同程序、绿色线程(green thread)、纤程(fiber)非常有用 。当实现非阻塞I/O时,一个大的优势是,代码可以根据线程实际使用情况编写,但是运行时仍然在后台采用非阻塞I/O。Elasticsearch使用了多个线程池,因为Netty I/O框架和Guava是Elasticsearch的基础组件,因此在用Java7时,可以考虑进一步挖掘优化线程的特性。

发挥增加栈空间大小的优势还是有挑战的,因为不同的操作系统、不同的CPU架构,甚至在不同的JVM版本之间,栈空间的消耗不是容易比较的。取决于CPU架构和操作系统,JVM的栈空间大小是内建的。他们是否在所有场景下都适合?例如Sloaris Sparc 64位的JVM Xss默认为512K,因为有更大地址指针,Sloaris X86为320K。Linux降为256K。Windows 32位Java6默认320K,Windows 64位则为1024K。

大堆的挑战

今天,几GB的内存是很常见的。但是在不久以前,系统管理员还在为多几G的内存需求泪流满面。

Java垃圾收集器是随着2006年的Java6的出现而显著改进的。从那以后,可以并发执行多任务,并且减少了GC停顿几率: stop - the - world阶段。CMS算法是革命性的,多任务,并发, 不需要移动的GC。但是不幸的是,对于堆的存活数据量来说,它是不可扩展的。Prateek Khanna 和 Aaron Morton给出了CMS垃圾收集器能够处理的堆规模的数字。

避免Stop-the-world阶段

我们已经学习了Elasticsearch如何配置CMS垃圾收集器。但这并不能组织长时间的GC停顿,它只是降低了发生的几率。CMS是一个低停顿几率的收集器,但是仍然有一些边界情况。当堆上有MB级别的大数组,或者其他一些特殊的场景,CMS可能比预期要花费更多的时间。

MB级别数组的创建在Lucene segment-based索引合并时是很常见的。如果你希望降低CMS的额外负载,就需要调整Lucene合并阶段的段数量,使用参数index.merge.policy.segments_per_tier

减少换页

大堆的风险在于内存压力上。注意,如果Java JVM在处理大堆时,这部分内存对于系统其它部分来说是不可用的。如果内存吃紧,操作系统会进行换页,并且,在紧急情况下,当所有其他方式回收内存都失败时,会强制杀掉进程。如果换页发生,整个系统的性能会下降,自然GC的性能也跟着下降。所以,不要给堆分配太多的内存。

垃圾收集器的选择

从Java JDK 7u4开始,Garbage-First(G1)收集器是Java7默认的垃圾收集器。它适用于多核的机器以及大内存。它一方面降低了停顿时间,另一方面增加了停顿的次数。整个堆的操作,例如全局标记,是在应用线程中并发执行的。这会防止随着堆或存活数据大小的变化,中断时间也成比例的变化。

G1收集器目标是获取更高的吞吐量,而不是速度。在以下情况下,它能运行的很好:

1. 存活数据占用了超过50%的Java堆

2. 对象分配比例或者promotion会有明显的变化

3. 不希望gc或者compaction停顿时间长(超过0.5至1s)

注意,如果使用G1垃圾收集器,堆不再使用的内存可能会被归还给操作系统

G1垃圾收集器的不足是CPU使用率越高,应用性能越差。因此,如果在内存足够和CPU能力一般的情况下,CMS可能更胜一筹。

对于Elasticsearch来说,G1意味着没有长时间的stop-the-world阶段,以及更灵活的内存管理,因为buffer memory和系统I/O缓存能更充分的利用机器内存资源。代价就是小成本的最大化性能,因为G1利用了更多CPU资源。

性能调优策略

你读这篇博文因为你希望在性能调优上得到一些启示:

1. 清楚了解你的性能目标。你希望最大化速度,还是最大化吞吐量?

2. 记录任何事情(log everything),收集统计数据,阅读日志、分析事件来诊断配置

3. 选择你调整的目标(最大化性能还是最大化吞吐量)

4. 计划你的调整

5. 应用你的新配置

6. 监控新配置后的系统

7. 如果新配置没有改善你的处境,重复上面的一系列动作,反复尝试

Elasticsearch垃圾收集日志格式

Elasticsearch长时间GC下warns级别的日志如下所示:

[2012-11-26 18:13:53,166][WARN ][monitor.jvm ] [Ectokid] [gc][ParNew][1135087][11248] duration [2.6m], collections [1]/[2.7m], total [2.6m]/[6.8m], memory [2.4gb]-[2.3gb]/[3.8gb], all_pools {[Code Cache] [13.7mb]-[13.7mb]/[48mb]}{[Par Eden Space] [109.6mb]-[15.4mb]/[1gb]}{[Par Survivor Space] [136.5mb]-[0b]/[136.5mb]}{[CMS Old Gen] [2.1gb]-[2.3gb]/[2.6gb]}{[CMS Perm Gen] [35.1mb]-[34.9mb]/[82mb]}

JvmMonitorService类中有相关的使用方式:

Logfile Explanation

gc 运行中的gc

ParNew new parallel garbage collector

duration 2.6m gc时间为2.6分钟

collections [1]/[2.7m] 在跑一个收集,共花2.7分钟

memory [2.4gb]-[2.3gb]/[3.8gb] 内存消耗, 开始是2.4gb, 现在是2.3gb, 共有3.8gb内存

Code Cache [13.7mb]-[13.7mb]/[48mb] code cache占用内存

Par Eden Space [109.6mb]-[15.4mb]/[1gb] Par Eden Space占用内存

Par Survivor Space [136.5mb]-[0b]/[136.5mb] Par Survivor Space占用内存

CMS Old Gen [2.1gb]-[2.3gb]/[2.6gb] CMS Old Gen占用内存

CMS Perm Gen [35.1mb]-[34.9mb]/[82mb] CMS Perm Gen占用内存

JvmMonitorSer

一些建议

1. 不要在Java 6u22之前的发布版本中跑Elasticsearch。有内存方面的bug。那些超过两三年的bug和缺陷会妨碍Elasticsearch的正常运行。与旧的OpenJDK 6相比,更推荐Sun/Oracle的版本,因为后者修复了很多bug。

2. 放弃Java6,转到Java7。Oracle宣称Java6更新到2013年2月结束。考虑到Elasticsearch还是一个相对新的软件,应该使用更新的技术来提升性能。尽量从JVM中挤压性能。检查操作系统的版本。在最新版本的操作系统中运行,有助于你的Java运行环境达到最佳性能。

3. 定期更新Java运行环境。平均一个季度一次。告诉sa你需要及时更新Java版本,以获取Java性能的提升。

4. 从小到大。先在Elasticsearch单节点上进行开发。但是不要忘了Elasticsearch分布式的强大功能。单节点不能模拟生产环境的特征,至少需要3个节点进行开发测试。

5. 在调整JVM之前先做一下性能测试。对你的系统建立性能基线。调整测试时候的节点数量。如果索引时候负载很高,你可能需要降低Elasticsearch索引时候占用的堆大小,通过index.merge.policy.segments_per_tierparameter参数调整段的合并。

6. 调整前清楚你的性能目标,然后决定是调整速度还是吞吐量。

7. 启用日志以便更好的进行诊断。在优化系统前进行小心的评估。

8. 如果使用CMS垃圾收集器,你可能需要加上合理的 -XX:CMSWaitDuration 参数。

9. 如果你的堆超过6-8GB,超过了CMS垃圾收集器设计容量,你会遇到长时间的stop-the-world阶段,你有几个方案:调整CMSInitiatingOccupancyFraction参数降低长时间GC的几率减少最大堆的大小;启用G1垃圾收集器。

10. 学习垃圾收集调优艺术。如果你想精通的话,列出可用的JVM选项,在java命令中加入java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version,然后调优。

几种极其隐蔽的XSS注入的防护

XSS注入的本质

就是: 某网页中根据用户的输入, 不期待地生成了可执行的js代码, 并且js得到了浏览器的执行. 意思是说, 发给浏览器的字符串中, 包含了一段非法的js代码, 而这段代码跟用户的输入有关.

常见的XSS注入防护, 可以通过简单的 htmlspecialchars(转义HTML特殊字符), strip_tags(清除HTML标签) 来解决, 但是, 还有一些隐蔽的XSS注入不能通过这两个方法来解决, 而且, 有时业务需要不允许清除HTML标签和特殊字符. 下面列举几种隐蔽的XSS注入方法:

IE6/7 UTF7 XSS 漏洞攻击

隐蔽指数: 5

伤害指数: 5

这个漏洞非常隐蔽, 因为它让出现漏洞的网页看起来只有英文字母(ASCII字符), 并没有非法字符, htmlspecialchars 和 strip_tags 函数对这种攻击没有作用. 不过, 这个攻击只对 IE6/IE7 起作用, 从 IE8 起微软已经修复了. 你可以把下面这段代码保存到一个文本文件中(前面不要有空格和换行), 然后用 IE6 打开试试(没有恶意代码, 只是一个演示):

+/v8 +ADw-script+AD4-alert(document.location)+ADw-/script+AD4-

最容易中招的就是 JSONP 的应用了, 解决方法是把非字母和数字下划线的字符全部过滤掉. 还有一种方法是在网页开始输出空格或者换行, 这样, UTF7-XSS 就不能起作用了.

因为只对非常老版本的 IE6/IE7 造成伤害, 对 Firefox/Chrome 没有伤害, 所以伤害指数只能给 4 颗星.

参考资料:UTF7-XSS不正确地拼接 JavaScript/JSON 代码段

隐蔽指数: 5

伤害指数: 5

Web 前端程序员经常在 PHP 代码或者某些模板语言中, 动态地生成一些 JavaScript 代码片段, 例如最常见的:

var a = '?php echo htmlspecialchars($name); ?';

不想, $name 是通过用户输入的, 当用户输入a’; alert(1); 时, 就形成了非法的JavaScript 代码, 也就是XSS 注入了.

只需要把上面的代码改成:

var a = ?php echo json_encode($name); ?;

去掉单引号, 利用 PHP 的 json_encode() 函数来生成表示字符串的字符串. 这样做是因为,

最好用 json_encode() 函数来生成所有的 JSON 串, 而不要试图自己去拼接

. 程序员总是犯这样的错误: 自己去解析 HTTP 报文, 而不是用现成的成熟的库来解析. 用 json_encode() 的好处还在于, 即使业务要求我要保留单引号时, XSS注入也可以避免.

隐蔽指数最高级, 伤害所有的通用浏览器

. 这种 XSS 注入方式具有非常重要的参考意义.

最后, 根据工作中的经验, 以及我自己和别人犯过的错, 我总结出一个定理: 没有一劳永逸的单一方法可以解决所有 XSS 注入问题.

有用的经验:输出 HTML 代码时 htmlspecialchars输出JavaScript 代码时 json_encode

输入过滤应该用于解决业务限制, 而不是用于解决 XSS 注入(与严进宽出的原则相悖, 所以本条值得讨论)讨论:上文提到的经验第3条, 是一种宽进严出的原则, 和严进宽出原则是相悖的. 其实, 我认为不应该把严进宽出作为一条伪真理, 好像除了它其它的说法都不对了似的. 宽进严出和严进宽出应该具有完全相等的地位, 根据实现的成本进行取舍.

例如, 用户的名字可以采用严进宽出原则, 不允许用户填写单引号, 大于号小于号等. 但是用户的签名呢? 难道就不能填单引号?

如何正确防御xss攻击

传统防御技术

2.1.1基于特征的防御

传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。

2.1.2 基于代码修改的防御

和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免:

1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。

2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。

3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。

当然,如上方法将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。

并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。

扩展资料:

XSS攻击的危害包括

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

3、盗窃企业重要的具有商业价值的资料

4、非法转账

5、强制发送电子邮件

6、网站挂马

7、控制受害者机器向其它网站发起攻击

受攻击事件

新浪微博XSS受攻击事件

2011年6月28日晚,新浪微博出现了一次比较大的XSS攻击事件。

大量用户自动发送诸如:

“郭美美事件的一些未注意到的细节”,“建党大业中穿帮地方”,“让女人心动的100句诗歌”,“这是传说中的神仙眷侣啊”等等微博和私信,并自动关注一位名为hellosamy的用户。

事件的经过线索如下:

20:14,开始有大量带V的认证用户中招转发蠕虫

20:30,某网站中的病毒页面无法访问

20:32,新浪微博中hellosamy用户无法访问

21:02,新浪漏洞修补完毕

百度贴吧xss攻击事件

2014年3月9晚,六安吧等几十个贴吧出现点击推广贴会自动转发等。并且吧友所关注的每个关注的贴吧都会转一遍,病毒循环发帖。并且导致吧务人员,和吧友被封禁。

参考资料:

XSS攻击-百度百科

JVM环境参数怎么配置?

典型JVM参数设置:

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k

-Xmx3550m:设置JVM最大可用内存为3550M。

-Xms3550m:设置JVM促使内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0

-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5

-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6

-XX:MaxPermSize=16m:设置持久代大小为16m。

-XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。

java 编译优化问题

java编译的结果是字节码而不是二进制,所以在运行时vm的优化才是重要的,包括VM的回收策略、分配给VM内存的大小都能在一定程度上影响性能。Sun的VM支持热点编译,对高频执行的代码段翻译的2进制会进行缓存,这也是VM的一种优化。

IBM JVM处理数学运算速度最快,BEA JVM处理大量线程和网络socket性能最好,而Sun JVM处理通常的商业逻辑性能最好。不过Hotspot的Server mode被报告有稳定性的问题。

Java 的最大优势不是体现在执行速度上,所以对Compiler的要求并不如c++那样高,代码级的优化还需要程序员本身的功底。

贴个java的运行参数:

Usage: java [-options] class [args...]

(to execute a class)

or java [-options] -jar jarfile [args...]

(to execute a jar file)

where options include:

-client to select the "client" VM

-server to select the "server" VM

-hotspot is a synonym for the "client" VM [deprecated]

The default VM is client.

-cp class search path of directories and zip/jar files

-classpath class search path of directories and zip/jar files

A ; separated list of directories, JAR archives,

and ZIP archives to search for class files.

-Dname=value

set a system property

-verbose[:class|gc|jni]

enable verbose output

-version print product version and exit

-version:value

require the specified version to run

-showversion print product version and continue

-jre-restrict-search | -jre-no-restrict-search

include/exclude user private JREs in the version search

-? -help print this help message

-X print help on non-standard options

-ea[:packagename...|:classname]

-enableassertions[:packagename...|:classname]

enable assertions

-da[:packagename...|:classname]

-disableassertions[:packagename...|:classname]

disable assertions

-esa | -enablesystemassertions

enable system assertions

-dsa | -disablesystemassertions

disable system assertions

-agentlib:libname[=options]

load native agent library libname, e.g. -agentlib:hprof

see also, -agentlib:jdwp=help and -agentlib:hprof=help

-agentpath:pathname[=options]

load native agent library by full pathname

-javaagent:jarpath[=options]

load Java programming language agent, see

java.lang.instrument

-Xmixed mixed mode execution (default)

-Xint interpreted mode execution only

-Xbootclasspath:directories and zip/jar files separated by ;

set search path for bootstrap classes and resources

-Xbootclasspath/a:directories and zip/jar files separated by ;

append to end of bootstrap class path

-Xbootclasspath/p:directories and zip/jar files separated by ;

prepend in front of bootstrap class path

-Xnoclassgc disable class garbage collection

-Xincgc enable incremental garbage collection

-Xloggc:file log GC status to a file with time stamps

-Xbatch disable background compilation

-Xmssize set initial Java heap size

-Xmxsize set maximum Java heap size

-Xsssize set java thread stack size

-Xprof output cpu profiling data

-Xfuture enable strictest checks, anticipating future default

-Xrs reduce use of OS signals by Java/VM (see

documentation)

-Xcheck:jni perform additional checks for JNI functions

-Xshare:off do not attempt to use shared class data

-Xshare:auto use shared class data if possible (default)

-Xshare:on require using shared class data, otherwise fail.

Java虚拟机(JVM)参数配置说明

在Java、J2EE大型应用中,JVM非标准参数的配置直接关系到整个系统的性能。

JVM非标准参数指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需

要任何配置。但是在生产环境中,为了提高性能,往往需要调整这些参数,以求系统达

到最佳新能。

另外这些参数的配置也是影响系统稳定性的一个重要因素,相信大多数Java开发人员都

见过“OutOfMemory”类型的错误。呵呵,这其中很可能就是JVM参数配置不当或者就没

有配置没意识到配置引起的。

为了说明这些参数,还需要说说JDK中的命令行工具一些知识做铺垫。

首先看如何获取这些命令配置信息说明:

假设你是windows平台,你安装了J2SDK,那么现在你从cmd控制台窗口进入J2SDK安装目

录下的bin目录,然后运行java命令,出现如下结果,这些就是包括java.exe工具的和

JVM的所有命令都在里面。

-----------------------------------------------------------------------

D:\j2sdk15\binjava

Usage: java [-options] class [args...]

(to execute a class)

or java [-options] -jar jarfile [args...]

(to execute a jar file)

where options include:

-client to select the "client" VM

-server to select the "server" VM

-hotspot is a synonym for the "client" VM [deprecated]

The default VM is client.

-cp class search path of directories and zip/jar files

-classpath class search path of directories and zip/jar files

A ; separated list of directories, JAR archives,

and ZIP archives to search for class files.

-Dname=value

set a system property

-verbose[:class|gc|jni]

enable verbose output

-version print product version and exit

-version:value

require the specified version to run

-showversion print product version and continue

-jre-restrict-search | -jre-no-restrict-search

include/exclude user private JREs in the version search

-? -help print this help message

-X print help on non-standard options

-ea[:packagename...|:classname]

-enableassertions[:packagename...|:classname]

enable assertions

-da[:packagename...|:classname]

-disableassertions[:packagename...|:classname]

disable assertions

-esa | -enablesystemassertions

enable system assertions

-dsa | -disablesystemassertions

disable system assertions

-agentlib:libname[=options]

load native agent library libname, e.g. -agentlib:hprof

see also, -agentlib:jdwp=help and -agentlib:hprof=help

-agentpath:pathname[=options]

load native agent library by full pathname

-javaagent:jarpath[=options]

load Java programming language agent, see

java.lang.instrument

-----------------------------------------------------------------------

在控制台输出信息中,有个-X(注意是大写)的命令,这个正是查看JVM配置参数的命

令。

其次,用java -X 命令查看JVM的配置说明:

运行后如下结果,这些就是配置JVM参数的秘密武器,这些信息都是英文的,为了方便

阅读,我根据自己的理解翻译成中文了(不准确的地方还请各位博友斧正)

-----------------------------------------------------------------------

D:\j2sdk15\binjava -X

-Xmixed mixed mode execution (default)

-Xint interpreted mode execution only

-Xbootclasspath:directories and zip/jar files separated by ;

set search path for bootstrap classes and resources

-Xbootclasspath/a:directories and zip/jar files separated by ;

append to end of bootstrap class path

-Xbootclasspath/p:directories and zip/jar files separated by ;

prepend in front of bootstrap class path

-Xnoclassgc disable class garbage collection

-Xincgc enable incremental garbage collection

-Xloggc:file log GC status to a file with time stamps

-Xbatch disable background compilation

-Xmssize set initial Java heap size

-Xmxsize set maximum Java heap size

-Xsssize set java thread stack size

-Xprof output cpu profiling data

-Xfuture enable strictest checks, anticipating future default

-Xrs reduce use of OS signals by Java/VM (see

documentation)

-Xcheck:jni perform additional checks for JNI functions

-Xshare:off do not attempt to use shared class data

-Xshare:auto use shared class data if possible (default)

-Xshare:on require using shared class data, otherwise fail.

The -X options are non-standard and subject to change without notice.

-----------------------------------------------------------------------

JVM配置参数中文说明:

-----------------------------------------------------------------------

1、-Xmixed mixed mode execution (default)

混合模式执行

2、-Xint interpreted mode execution only

解释模式执行

3、-Xbootclasspath:directories and zip/jar files separated by ;

set search path for bootstrap classes and resources

设置zip/jar资源或者类(.class文件)存放目录路径

3、-Xbootclasspath/a:directories and zip/jar files separated by ;

append to end of bootstrap class path

追加zip/jar资源或者类(.class文件)存放目录路径

4、-Xbootclasspath/p:directories and zip/jar files separated by ;

prepend in front of bootstrap class path

预先加载zip/jar资源或者类(.class文件)存放目录路径

5、-Xnoclassgc disable class garbage collection

关闭类垃圾回收功能

6、-Xincgc enable incremental garbage collection

开启类的垃圾回收功能

7、-Xloggc:file log GC status to a file with time stamps

记录垃圾回日志到一个文件。

8、-Xbatch disable background compilation

关闭后台编译

9、-Xmssize set initial Java heap size

设置JVM初始化堆内存大小

10、-Xmxsize set maximum Java heap size

设置JVM最大的堆内存大小

11、-Xsssize set java thread stack size

设置JVM栈内存大小

12、-Xprof output cpu profiling data

输入CPU概要表数据

13、-Xfuture enable strictest checks, anticipating future default

执行严格的代码检查,预测可能出现的情况

14、-Xrs reduce use of OS signals by Java/VM (see

documentation)

通过JVM还原操作系统信号

15、-Xcheck:jni perform additional checks for JNI functions

对JNI函数执行检查

16、-Xshare:off do not attempt to use shared class data

尽可能不去使用共享类的数据

17、-Xshare:auto use shared class data if possible (default)

尽可能的使用共享类的数据

18、-Xshare:on require using shared class data, otherwise fail.

尽可能的使用共享类的数据,否则运行失败

The -X options are non-standard and subject to change without notice.

  • 评论列表:
  •  黑客技术
     发布于 2022-06-30 15:55:21  回复该评论
  • al checks for JNI functions -Xshare:off do not attempt to use shared class dat
  •  黑客技术
     发布于 2022-06-30 08:42:27  回复该评论
  • [13.7mb]-[13.7mb]/[48mb] code cache占用内存 Par Eden Space [109.6mb]-[15.4mb]/[1gb]

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.