php变量在 执行一次请求后 就在内存中被销毁, java变量为何在执行一次操作后 未被销毁?

justphp 发布于 2014/12/26 11:22
阅读 1K+
收藏 1

php:

  在执行一次请求后,内存中各种php变量会随着 响应的完毕 而被销毁掉;

java:

 在执行一次操作后, java变量 仍会咋内存中; 再执行下次操作的时候, 还可以捕获上次的java变量;

这是为何?

加载中
0
杨三更
杨三更
所以你需要了解下 什么是脚本语言
0
eechen
eechen

引用来自“杨三更”的评论

所以你需要了解下 什么是脚本语言
Django(Python),RoR,Node.JS虽然用的都是脚本语言,但这些应用在Web服务器端是作为一个类似守护进程的应用【实例】来运行,比如RoR的ActiveRecord会常驻内存,如果不能有效的及时释放,就会造成内存膨胀.又比如,Node.js应用中线程异常也会导致真个Node.js进程崩溃退出.同为脚本语言,它们应用跟PHP应用的运行模式是截然不同的.另外虽然都是脚本语言,PHP修改代码立即生效,而Node.JS应用则需要重启进程,要实现热部署,还需要借助额外的工具,比如nodemon和pm2.不过PHP提供有缓存中间码的机制,能提升性能,如果使用Yac这个PECL扩展,也能让PHP进程之间共享一些简单的数据.
杨三更
杨三更
回复 @eechen : 脚本可能是解释型语言也可能不是,非脚本一定是编译型语言
eechen
eechen
PHP Swoole应用的运行模式更类似于Django(Python),RoR,Node.JS,跟PHP-FPM/HTTPD不同.
0
聽雨人
聽雨人
在拓展级别申请的内存不会再请求结束后回收,但是只能在进程内的多个请求里共用。
0
hongmajia
hongmajia

在执行一次请求后,内存中各种php变量会随着 响应的完毕 而被销毁掉
这个是在web容器下的PHP

运行模式不一样,特性也不同,比如在php cli下运行,内存中的各种变量都不会销毁,和java一样

mickelfeng
mickelfeng
php cli模式下一次请求后,内存中各种php变量都会销毁掉,你是说的交互模式-a下
0
军师ives

php就是每次出门就打的。找车麻烦,但是随便找。

java就是自己开车,出门方便,但是需要保养车子。

甘薯
甘薯
回复 @eechen : 写出并且发布PECL给别人用的人都是高人, 一般不会有问题, 但是不代表php这种扩展形式是坚不可摧的. tomcat 崩溃很正常, java也不是万能的神仙, JVM自己还有bug呢. 之所以容易被发现可能是因为用的人太多范围太广了...
eechen
eechen
回复 @ZeroOne : 经常听到有人说Tomcat崩溃或内存膨胀,却很少听到有人说PHP因为PECL扩展或者脚本崩溃.
甘薯
甘薯
回复 @eechen : java线程崩溃了只是多了一个死线程,只要JVM不挂应该不会车毁人亡.事实上php也有的问题,虽然脚本不会让php直接死掉,但编写质量不高的扩展也很容易让php完蛋...
eechen
eechen
Java线程崩了,车毁人亡。PHP工作进程崩了,PHP主进程还可以重新fork一个,出租车就是多。
0
铂金小狗
铂金小狗
JAVA不适合WEB
甘薯
甘薯
这话... 几个最大的互联网公司的后台语言都是java, 不适合在何处?php是不错, 但是大规模的开发貌似还是java强一些
0
南湖船老大
南湖船老大

引用来自“铂金小狗”的评论

JAVA不适合WEB
web不是网站
南湖船老大
南湖船老大
回复 @eechen : Java做的也不少,这只是web的一部分
eechen
eechen
JAVA不适合做网站,这样说可以了吧.
灌直
灌直
精辟!
返回顶部
顶部